Flutter showcase app.

Related tags

Templates fmovies
Overview

fmovies - Flutter showcase app

fmovies is a multiplatform app for browsing new movies and fetching nearest cinemas. It is completely written in Dart and Flutter framework using BLoC pattern.

This app is not released in production because it is just a showcase what you can do with Flutter. We started this project as a playground for learning Dart and Flutter framework.

Features

  • list of new movies - Now playing movies from TMDB API
  • favorites list - List of favorite movies from app database
  • map with nearby cinemas - Google map connected with Places API to fetch nearest cinemas
  • movie details - Movie detail from TMDB API

Building the project

First of all you will need to setup your development environment. To do that go to the official Flutter documentation and follow ve. After flutter doctor says everything is fine follow next steps:

  1. Clone the project to your machine
  2. Open project with your IDE
  3. Run flutter packages get
  4. Add API key for Google Maps
  • Android: Specify your API key in the AndroidManifest.xml
<manifest>
  <application>
    <meta-data android:name="com.google.android.geo.API_KEY"
               android:value="YOUR KEY HERE"/>
   </application>
</manifest>
  • iOS: Specify your API key in the application delegate ios/Runner/AppDelegate.swift:
import UIKit
import Flutter
import GoogleMaps

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
  ) -> Bool {
    GMSServices.provideAPIKey("YOUR KEY HERE")
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}
  1. Create new file secrets.json in /assets directory and add TMDB API key and Places API key
{
  "tmdb_key": "random_key",
  "places_key": "random_key"
}
  1. Run the app on your simulator/emulator or device.

Plugins

  • flutter_bloc - A Flutter package that helps implement the BLoC pattern.
  • google_maps_flutter - A Flutter plugin that provides a Google Maps widget.
  • dio - A powerful Http client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout etc.
  • get_it - Simple Service Locator for Dart and Flutter projects with some additional goodies highly inspired by Splat.
  • geolocator - A Flutter geolocation plugin which provides easy access to the platform specific location services (FusedLocationProviderClient or if not available the LocationManager on Android and CLLocationManager on iOS).
  • moor_flutter - Moor is an easy to use, reactive persistence library for Flutter apps. Define your database tables in pure Dart and enjoy a fluent query API, auto-updating streams and more!
  • flare_flutter - Flutter runtime for Flare, depends on flare_dart.
  • location_permissions - The Location Permissions plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to check and request permissions to access location services.
  • auto_size_text - Flutter widget that automatically resizes text to fit perfectly within its bounds.
  • animated_text_kit - A flutter package which contains a collection of some cool and awesome text animations.
You might also like...

A showcase flutter todo application.

flutter_todo A showcase/portfolio todo app. Inspired by https://dribbble.com/shots/3812962-iPhone-X-Todo-Concept The result The app uses my own librar

Dec 17, 2022

Aris wallstreetnw - Showcase how to work with HttpClient in Flutter

Aris wallstreetnw - Showcase how to work with HttpClient in Flutter

Flutter News App Demo This project is to showcase how to work with HttpClient in

Mar 31, 2022

A Flutter package allows you to Showcase/Highlight your widgets step by step.👌🔝🎉

A Flutter package allows you to Showcase/Highlight your widgets step by step.👌🔝🎉

ShowCaseView A Flutter package allows you to Showcase/Highlight your widgets step by step. Preview Installing Add dependency to pubspec.yaml Get the l

Jan 2, 2023

Courses-app-flutter - Flutter App - Courses App UI

Courses-app-flutter - Flutter App - Courses App UI

Courses App A new Flutter project. Design: https://dribbble.com/shots/16149674-Course-learning-app-ui-ux/attachments/8004958?mode=media Getting Starte

Jan 2, 2022

Taxi App Client App - Taxi Rouge App With Flutter

Taxi App Client App - Taxi Rouge App With Flutter

taxi_rouge_app A new Flutter application. Getting Started This project is a star

Jun 11, 2022

Book app - Book app UI with dark mode enabled, also this app created using the Flutter 2.5 skeleton template

Book app - Book app UI with dark mode enabled, also this app created using the Flutter 2.5 skeleton template

BOOK APP Book app UI with dark mode enabled, also this app created using the Flu

Nov 9, 2022

A Flutter app to show how to implement in-app purchase using the in-app-purchase package

Flutter in-app purchase A Flutter project to show to implement in-app purchase using the in_app_purchase package Simple UI but it's okay 🥲 😉 WhatsAp

Jul 26, 2022

This is a MVP our app's. The app get the song's list on firebase and display then you can be listen App features.

This is a MVP our app's. The app get the song's list on firebase and display then you can be listen App features.

music_app Requirements: flutter version 3.0.3 Dart 2.17.5 Firebase CLI 11.1.0 flutter sdk: = 2.15.1 3.0.0 flutter dependentcies: http: 0.13.4 mvvm:

Aug 2, 2022
Comments
  • Error when running the project

    Error when running the project

    I have completed all of the outlined setup steps. When I run flutter run -d all, I get the following terminal out which displays multiple errors:

    `rossheaton@Rosss-MacBook-Pro fmovies % flutter run -d all Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling software rendering with "--enable-software-rendering". Launching lib/main.dart on Android SDK built for x86 in debug mode... Initializing gradle... 0.9s Resolving dependencies... 2.6s

    Compiler message:
    lib/src/features/favorites/domain/favorite_movies_bloc.dart:46:22: Error: Getter not found: 'currentState'. List.from((currentState as FavoriteMoviesLoaded).movies)
    ^^^^^^^^^^^^
    lib/src/features/favorites/domain/favorite_movies_bloc.dart:52:15: Error: Getter not found: 'currentState'. yield currentState;
    ^^^^^^^^^^^^
    lib/src/features/favorites/domain/favorite_movies_bloc.dart:54:13: Error: Getter not found: 'currentState'. yield currentState;
    ^^^^^^^^^^^^
    lib/src/features/favorites/domain/favorite_movies_bloc.dart:46:22: Error: The getter 'currentState' isn't defined for the class 'FavoriteMoviesBloc'.

    • 'FavoriteMoviesBloc' is from 'package:fmovies/src/features/favorites/domain/favorite_movies_bloc.dart' ('lib/src/features/favorites/domain/favorite_movies_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. List.from((currentState as FavoriteMoviesLoaded).movies)
      ^^^^^^^^^^^^
      lib/src/features/favorites/domain/favorite_movies_bloc.dart:52:15: Error: The getter 'currentState' isn't defined for the class 'FavoriteMoviesBloc'.
    • 'FavoriteMoviesBloc' is from 'package:fmovies/src/features/favorites/domain/favorite_movies_bloc.dart' ('lib/src/features/favorites/domain/favorite_movies_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. yield currentState;
      ^^^^^^^^^^^^
      lib/src/features/favorites/domain/favorite_movies_bloc.dart:54:13: Error: The getter 'currentState' isn't defined for the class 'FavoriteMoviesBloc'.
    • 'FavoriteMoviesBloc' is from 'package:fmovies/src/features/favorites/domain/favorite_movies_bloc.dart' ('lib/src/features/favorites/domain/favorite_movies_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. yield currentState;
      ^^^^^^^^^^^^
      lib/src/features/home/domain/tab_bloc.dart:16:34: Error: Getter not found: 'currentState'. final AppTab currentTab = (currentState as ChangeTabState).activeTab; ^^^^^^^^^^^^
      lib/src/features/home/domain/tab_bloc.dart:16:34: Error: The getter 'currentState' isn't defined for the class 'TabBloc'.
    • 'TabBloc' is from 'package:fmovies/src/features/home/domain/tab_bloc.dart' ('lib/src/features/home/domain/tab_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. final AppTab currentTab = (currentState as ChangeTabState).activeTab; ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:42:11: Error: Getter not found: 'currentState'. if (currentState is PopularMoviesLoaded) {
      ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:44:14: Error: Getter not found: 'currentState'. (currentState as PopularMoviesLoaded).movies.toList();
      ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:42:11: Error: The getter 'currentState' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. if (currentState is PopularMoviesLoaded) {
      ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:44:14: Error: The getter 'currentState' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. (currentState as PopularMoviesLoaded).movies.toList();
      ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:74:11: Error: Getter not found: 'currentState'. if (currentState is PopularMoviesLoaded) {
      ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:75:24: Error: Getter not found: 'currentState'. updatedList = (currentState as PopularMoviesLoaded).movies.map((movie) { ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:81:13: Error: Getter not found: 'currentState'. yield currentState;
      ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:74:11: Error: The getter 'currentState' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. if (currentState is PopularMoviesLoaded) {
      ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:75:24: Error: The getter 'currentState' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. updatedList = (currentState as PopularMoviesLoaded).movies.map((movie) { ^^^^^^^^^^^^
      lib/src/features/popular/domain/popular_movies_bloc.dart:81:13: Error: The getter 'currentState' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'currentState'. yield currentState;
      ^^^^^^^^^^^^
      lib/src/features/home/presentation/home_page.dart:36:42: Error: The method 'dispatch' isn't defined for the class 'TabBloc'.
    • 'TabBloc' is from 'package:fmovies/src/features/home/domain/tab_bloc.dart' ('lib/src/features/home/domain/tab_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. onTabSelected: (tab) => bloc.dispatch(UpdateTab(tab)),
      ^^^^^^^^
      lib/src/features/cinemas/presentation/cinemas_page.dart:90:12: Error: The method 'dispatch' isn't defined for the class 'CinemasBloc'.
    • 'CinemasBloc' is from 'package:fmovies/src/features/cinemas/domain/cinemas_bloc.dart' ('lib/src/features/cinemas/domain/cinemas_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. bloc.dispatch(FetchCinemas(position));
      ^^^^^^^^
      lib/src/features/cinemas/presentation/cinemas_page.dart:92:12: Error: The method 'dispatch' isn't defined for the class 'CinemasBloc'.
    • 'CinemasBloc' is from 'package:fmovies/src/features/cinemas/domain/cinemas_bloc.dart' ('lib/src/features/cinemas/domain/cinemas_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. bloc.dispatch(CannotFetchLocation());
      ^^^^^^^^
      lib/src/features/favorites/presentation/favorite_movies_page.dart:13:10: Error: The method 'dispatch' isn't defined for the class 'FavoriteMoviesBloc'.
    • 'FavoriteMoviesBloc' is from 'package:fmovies/src/features/favorites/domain/favorite_movies_bloc.dart' ('lib/src/features/favorites/domain/favorite_movies_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. bloc.dispatch(GetFavoriteMovies());
      ^^^^^^^^
      lib/src/features/popular/presentation/popular_movies_page.dart:18:23: Error: The method 'dispatch' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. popularMoviesBloc.dispatch(FetchPopularMovies());
      ^^^^^^^^
      lib/src/features/popular/presentation/popular_movies_page.dart:35:25: Error: The method 'dispatch' isn't defined for the class 'TabBloc'.
    • 'TabBloc' is from 'package:fmovies/src/features/home/domain/tab_bloc.dart' ('lib/src/features/home/domain/tab_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. tabBloc.dispatch(MovieSavedToFavorites(true));
      ^^^^^^^^
      lib/src/features/popular/presentation/popular_movies_page.dart:58:41: Error: The method 'dispatch' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. popularMoviesBloc.dispatch(FetchPopularMovies()), ^^^^^^^^
      lib/src/features/favorites/presentation/favorite_movies_list.dart:189:16: Error: The method 'dispatch' isn't defined for the class 'FavoriteMoviesBloc'.
    • 'FavoriteMoviesBloc' is from 'package:fmovies/src/features/favorites/domain/favorite_movies_bloc.dart' ('lib/src/features/favorites/domain/favorite_movies_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. bloc.dispatch(DeleteFavoriteMovie(movie: movie));
      ^^^^^^^^
      lib/src/features/popular/presentation/popular_movies_list.dart:63:12: Error: The method 'dispatch' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. bloc.dispatch(FetchPopularMovies());
      ^^^^^^^^
      lib/src/features/popular/presentation/popular_movies_list.dart:111:37: Error: The method 'dispatch' isn't defined for the class 'PopularMoviesBloc'.
    • 'PopularMoviesBloc' is from 'package:fmovies/src/features/popular/domain/popular_movies_bloc.dart' ('lib/src/features/popular/domain/popular_movies_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. onTap: () => bloc.dispatch(SavePopularMovie(movie)),
      ^^^^^^^^
      lib/src/features/movie/presentation/movie_details.dart:27:10: Error: The method 'dispatch' isn't defined for the class 'MovieDetailsBloc'.
    • 'MovieDetailsBloc' is from 'package:fmovies/src/features/movie/domain/movie_details_bloc.dart' ('lib/src/features/movie/domain/movie_details_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. bloc.dispatch(FetchMovieDetails(movie));
      ^^^^^^^^
      lib/src/features/movie/presentation/movie_details.dart:28:10: Error: The method 'dispatch' isn't defined for the class 'MovieDetailsBloc'.
    • 'MovieDetailsBloc' is from 'package:fmovies/src/features/movie/domain/movie_details_bloc.dart' ('lib/src/features/movie/domain/movie_details_bloc.dart'). Try correcting the name to the name of an existing method, or defining a method named 'dispatch'. bloc.dispatch(FetchMovieCredits(movie));
      ^^^^^^^^
      Compiler failed on /Users/rossheaton/Documents/development/flutter/fmovies/lib/main.dart Running Gradle task 'assembleDebug'...
      Running Gradle task 'assembleDebug'... Done 10.8s Gradle task assembleDebug failed with exit code 1`
    opened by rossheat 3
Owner
Martian & Machine
Martian & Machine
A sample app to showcase Recipes App UI demo in flutter

Flutter-Recipes-App-UI A sample app to showcase Recipes App UI demo in flutter. Development Setup Clone the repository and run the following commands:

Faiz Rhm 5 Dec 20, 2022
A sample app to showcase Crypto Wallet App UI demo in flutter.

Flutter-Crypto-Wallet-App A sample app to showcase Crypto Wallet App UI demo in flutter. Development Setup Clone the repository and run the following

Faiz Rhm 26 Dec 14, 2022
A showcase app for displaying image lists, developed on Flutter.

flutter_showcase_app Pixabay: A Flutter demo application. A showcase app for displaying image lists, developed on Flutter. Uses BLOC pattern, SQFLite

Muhammad Umair Adil 26 Nov 25, 2022
A Flutter app to showcase different types of Splash Screens

Flutter Splash Demo A Flutter applicaiton to showcase how to make different types of Splash Screens. In this demo we have used Video Player plugin, th

FlutterDevs 173 Dec 29, 2022
Flutter showcase app.

fmovies - Flutter showcase app fmovies is a multiplatform app for browsing new movies and fetching nearest cinemas. It is completely written in Dart a

Martian & Machine 39 Dec 13, 2022
A Flutter Weather App primarily developed to showcase my technical knowledge as well as practices I believe are the best.

Weather One This is a Flutter Weather App primarily developed to showcase my technical knowledge as well as practices I believe are the best. The weat

Phumudzo Muvhango 1 Apr 27, 2022
A showcase app for the Flutter SDK. Wonderous will educate and entertain as you uncover information about some of the most famous structures in the world.

Wonderous Navigate the intersection of history, art, and culture. Wonderous will educate and entertain as you uncover information about some of the mo

gskinner team 2.3k Dec 29, 2022
A set of real world timelines to showcase the use of timeline_tile package, built with Flutter.

beatiful_timelines Beautiful timelines built with Flutter and timeline_tile. Current examples: Timeline Showcase Football Timeline Activity Timeline S

null 233 Dec 21, 2022
A showcase of the most common Flutter animation APIs.

Flutter Animations Gallery This project is a showcase of the most common Flutter animation APIs. Preview Also available as a Flutter web demo. Setting

Andrea Bizzotto 136 Dec 10, 2022
A showcase flutter todo application.

flutter_todo A showcase/portfolio todo app. Inspired by https://dribbble.com/shots/3812962-iPhone-X-Todo-Concept The result The app uses my own librar

David Leibovych 64 Dec 17, 2022