🎬 A movie catalog app for both Android & IOS ~ Flutter.io project in Dart | Dart, Bloc, Movies

Overview

Movie Catalog App

🎬 Browse through movies from the YIFY api

Getting Started

For help getting started with Flutter, view our online documentation.

Todo

  • VPN Support
  • Refactor bloc patterns and services
  • Add tests

Done this version

  • ...

Building

Create a keys.dart file in the lib/config/ folder and add the following code snippet in the keys.dart:

class Keys {
  static String admobAppId = 'your admob app id';
  static String addUnitId = 'your admob add unit id';
  static String theMovieDb = 'your https://www.themoviedb.org api key';
  static String sentryDsn = 'your sentry Dsn';
}

Apk

To build the free version:

flutter build apk --release --flavor free -t lib/main.dart

To build the pro version

flutter build apk --release --flavor pro -t lib/main_pro.dart

Explanation: The flavor option makes sure that in Android the build.gradle is using the right build flavors (including different applicationId). The target option (-t) makes sure we can use the different flavors in the dart code.

VSCode: Go to the debug tab (ctrl + shift + D) and select on top the debug configuration and there will be 2 available options: Flutter Free and Flutter Pro. These configurations will build the app with the commands given above.

App bundles (preferred)

To build the free version:

flutter build appbundle --flavor free -t lib/main.dart

To build the pro version

flutter build appbundle --flavor pro -t lib/main_pro.dart

Developping

Don't hesitate to fork this repository and if you are having any questions please contact me.

Play Store

Free

https://play.google.com/store/apps/details?id=com.devrnt.moviecatalog

Pro

https://play.google.com/store/apps/details?id=com.devrnt.moviecatalog.pro

Comments
  • Refresh button on suggestion screen acting strange

    Refresh button on suggestion screen acting strange

    The button on the movie suggestion screen is acting strange, whenever there is only one movie in the library the refresh button should not be visible.

    Sometimes the button is only shown when clicked on a movie details.

    bug 
    opened by devrnt 1
  • Notification icon wrong

    Notification icon wrong

    When you swipe down or are on the lock screen the notification icon is wrong, atm. this is known as a FirebaseMessage Console issue.

    Update this update over time.

    known issue 
    opened by devrnt 1
  • FlutterErrorscaffold

    FlutterErrorscaffold

    FlutterError: Scaffold.of() called with a context that does not contain a Scaffold.
    No Scaffold ancestor could be found starting from the context that was passed to Scaffold.of(). This usually happens when the context provided is from the same StatefulWidget as that whose build function actually creates the Scaffold widget being sought.
    There are several ways to avoid this problem. The simplest is to use a Builder to get a context that is "under" the Scaffold. For an example of this, please see the documentation for Scaffold.of():
      https://docs.flutter.io/flutter/material/Scaffold/of.html
    A more efficient solution is to split your build function into several widgets. This introduces a new context from which you can obtain the Scaffold. In this solution, you would have an outer widget that creates the Scaffold populated by instances of your new inner widgets, and then in these inner widgets you would use Scaffold.of().
    A less elegant but more expedient solution is assign a GlobalKey to the Scaffold, then use the key.currentState property to obtain the ScaffoldState rather than using the Scaffold.of() function.
    The context used was:
      MovieDetails
      File "scaffold.dart", line 1155, in Scaffold.of
      File "widget_helper.dart", line 45, in WidgetHelper.showSnackbar
      File "movie_details_screen.dart", line 303, in MovieDetailsState._downloadFile
      File "<asynchronous suspension>"
      File "movie_details_screen.dart", line 311, in MovieDetailsState._downloadFile
      File "<asynchronous suspension>"
      File "movie_details_screen.dart", line 291, in MovieDetailsState._buildSubtitleDropDown.<fn>
      File "ink_well.dart", line 511, in _InkResponseState._handleTap
      File "ink_well.dart", line 566, in _InkResponseState.build.<fn>
      File "recognizer.dart", line 166, in GestureRecognizer.invokeCallback
      File "tap.dart", line 240, in TapGestureRecognizer._checkUp
      File "tap.dart", line 211, in TapGestureRecognizer.acceptGesture
      File "arena.dart", line 156, in GestureArenaManager.sweep
      File "binding.dart", line 225, in _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent
      File "binding.dart", line 199, in _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent
      File "binding.dart", line 156, in _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent
      File "binding.dart", line 102, in _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue
      File "binding.dart", line 86, in _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket
      File "zone.dart", line 1136, in _rootRunUnary
      File "zone.dart", line 1029, in _CustomZone.runUnary
      File "zone.dart", line 931, in _CustomZone.runUnaryGuarded
      File "hooks.dart", line 233, in _invoke1
      File "hooks.dart", line 154, in _dispatchPointerDataPacket
    
    bug 
    opened by devrnt 0
  • StateError

    StateError

    Bad state: Cannot add new events after calling close.

    StateError: Bad state: Cannot add new events after calling close
      File "broadcast_stream_controller.dart", line 249, in _BroadcastStreamController.add
      File "subject.dart", line 135, in Subject._add
      File "subject.dart", line 129, in Subject.add
      File "subject.dart", line 161, in _StreamSinkWrapper.add
      File "movie_details_bloc.dart", line 30, in MovieDetailsBloc._getMovieDetails
      File "<asynchronous suspension>"
      File "movie_details_bloc.dart", line 23, in new MovieDetailsBloc.
      File "movie_details_screen.dart", line 137, in MovieDetailsState._createBloc
      File "movie_details_screen.dart", line 122, in MovieDetailsState.initState
      File "framework.dart", line 3846, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4659, in RenderObjectElement.updateChildren
      File "framework.dart", line 4992, in MultiChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "overlay.dart", line 607, in _TheatreElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3894, in StatefulElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 4006, in ProxyElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3894, in StatefulElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 2278, in BuildOwner.buildScope
      File "binding.dart", line 700, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame
      File "binding.dart", line 286, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback
      File "binding.dart", line 1012, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback
      File "binding.dart", line 952, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame
      File "binding.dart", line 864, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame
      File "zone.dart", line 1124, in _rootRun
      File "zone.dart", line 1021, in _CustomZone.run
      File "zone.dart", line 923, in _CustomZone.runGuarded
      File "hooks.dart", line 219, in _invoke
      File "hooks.dart", line 178, in _drawFrame
    
    bug sentry 
    opened by devrnt 0
  • Bloc

    Bloc

    Implementation of the bloc pattern

    Used in:

    • the latest, popularst and saved movies
    • when a user likes a movie the business logic is handled by the bloc pattern
    opened by devrnt 0
  • Movie details screen

    Movie details screen

    More than 2 torrents on movie details screen to small

    Whenever there are more than 2 torrents on a movie details screen the columns are too small. Only show 2 torrents every column and add a second row to display the others.

    bug 
    opened by devrnt 0
  • Top rated movies

    Top rated movies

    Top rated movies list not working correctly

    On the top rated movies tab there are movies with rating 0. Obviously these should not be in here.

    This issue can easily be fixed by adding an extra check to remove the movies with a 0 rating.

    bug 
    opened by devrnt 0
  • SocketException

    SocketException

    SocketException: OS Error: Connection reset by peer, errno = 104, address = yts.am, port = 45886.

    SocketException: SocketException: OS Error: Connection reset by peer, errno = 104, address = yts.am, port = 45886
      File "io_client.dart", line 33, in IOClient.send
      File "<asynchronous suspension>"
      File "base_client.dart", line 169, in BaseClient._sendUnstreamed
      File "<asynchronous suspension>"
      File "base_client.dart", line 32, in BaseClient.get
      File "movie_service.dart", line 107, in MovieService.fetchMovieById
      File "<asynchronous suspension>"
      File "movie_details_bloc.dart", line 28, in MovieDetailsBloc._getMovieDetails
      File "<asynchronous suspension>"
      File "movie_details_bloc.dart", line 23, in new MovieDetailsBloc.
      File "movie_details_screen.dart", line 137, in MovieDetailsState._createBloc
      File "movie_details_screen.dart", line 122, in MovieDetailsState.initState
      File "framework.dart", line 3846, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4659, in RenderObjectElement.updateChildren
      File "framework.dart", line 4992, in MultiChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "overlay.dart", line 607, in _TheatreElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3894, in StatefulElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 4006, in ProxyElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3894, in StatefulElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 2278, in BuildOwner.buildScope
      File "binding.dart", line 700, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame
      File "binding.dart", line 286, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback
      File "binding.dart", line 1012, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback
      File "binding.dart", line 952, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame
      File "binding.dart", line 864, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame
      File "zone.dart", line 1124, in _rootRun
      File "zone.dart", line 1021, in _CustomZone.run
      File "zone.dart", line 923, in _CustomZone.runGuarded
      File "hooks.dart", line 219, in _invoke
      File "hooks.dart", line 178, in _drawFrame
    
    bug sentry 
    opened by devrnt 1
  • _Exception

    _Exception

    Exception: Failed to load movies: Check if the apihttps://yts.am/api/v2/movie_details.json?movie_id=6066is still online. If not the case check if the mapping is still correct.

    _Exception: Exception: Failed to load movies: Check if the apihttps://yts.am/api/v2/movie_details.json?movie_id=6066is still online. If not the case check if the mapping is still correct.
      File "movie_service.dart", line 113, in MovieService.fetchMovieById
      File "<asynchronous suspension>"
      File "movie_details_bloc.dart", line 28, in MovieDetailsBloc._getMovieDetails
      File "<asynchronous suspension>"
      File "movie_details_bloc.dart", line 23, in new MovieDetailsBloc.
      File "movie_details_screen.dart", line 137, in MovieDetailsState._createBloc
      File "movie_details_screen.dart", line 122, in MovieDetailsState.initState
      File "framework.dart", line 3846, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4876, in SingleChildRenderObjectElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3722, in ComponentElement._firstBuild
      File "framework.dart", line 3864, in StatefulElement._firstBuild
      File "framework.dart", line 3717, in ComponentElement.mount
      File "framework.dart", line 2961, in Element.inflateWidget
      File "framework.dart", line 2764, in Element.updateChild
      File "framework.dart", line 4659, in RenderObjectElement.updateChildren
      File "framework.dart", line 4992, in MultiChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "overlay.dart", line 607, in _TheatreElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3894, in StatefulElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 4006, in ProxyElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 3894, in StatefulElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 4883, in SingleChildRenderObjectElement.update
      File "framework.dart", line 2753, in Element.updateChild
      File "framework.dart", line 3750, in ComponentElement.performRebuild
      File "framework.dart", line 3565, in Element.rebuild
      File "framework.dart", line 2278, in BuildOwner.buildScope
      File "binding.dart", line 700, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame
      File "binding.dart", line 286, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback
      File "binding.dart", line 1012, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback
      File "binding.dart", line 952, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame
      File "binding.dart", line 864, in _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame
      File "zone.dart", line 1124, in _rootRun
      File "zone.dart", line 1021, in _CustomZone.run
      File "zone.dart", line 923, in _CustomZone.runGuarded
      File "hooks.dart", line 219, in _invoke
      File "hooks.dart", line 178, in _drawFrame
    
    bug sentry 
    opened by devrnt 0
  • ClientException

    ClientException

    Connection closed while receiving data.

    ClientException: Connection closed while receiving data
      File "io_client.dart", line 54, in IOClient.send.<fn>
      File "async_error.dart", line 17, in _invokeErrorHandler
      File "stream_pipe.dart", line 286, in _HandleErrorStream._handleError
      File "stream_pipe.dart", line 168, in _ForwardingStreamSubscription._handleError
      File "zone.dart", line 1144, in _rootRunBinary
      File "zone.dart", line 1037, in _CustomZone.runBinary
      File "zone.dart", line 939, in _CustomZone.runBinaryGuarded
      File "stream_impl.dart", line 355, in _BufferingStreamSubscription._sendError.sendError
      File "stream_impl.dart", line 373, in _BufferingStreamSubscription._sendError
      File "stream_impl.dart", line 272, in _BufferingStreamSubscription._addError
      File "stream_pipe.dart", line 137, in _ForwardingStreamSubscription._addError
      File "stream_pipe.dart", line 188, in _addErrorWithReplacement
      File "stream_pipe.dart", line 291, in _HandleErrorStream._handleError
      File "stream_pipe.dart", line 168, in _ForwardingStreamSubscription._handleError
      File "zone.dart", line 1144, in _rootRunBinary
      File "zone.dart", line 1037, in _CustomZone.runBinary
      File "zone.dart", line 939, in _CustomZone.runBinaryGuarded
      File "stream_impl.dart", line 355, in _BufferingStreamSubscription._sendError.sendError
      File "stream_impl.dart", line 373, in _BufferingStreamSubscription._sendError
      File "stream_impl.dart", line 272, in _BufferingStreamSubscription._addError
      File "stream_controller.dart", line 768, in _SyncStreamController._sendError
      File "stream_controller.dart", line 648, in _StreamController._addError
      File "stream_controller.dart", line 600, in _StreamController.addError
      File "http_parser.dart", line 822, in _HttpParser._onDone
      File "zone.dart", line 1120, in _rootRun
      File "zone.dart", line 1021, in _CustomZone.run
      File "zone.dart", line 923, in _CustomZone.runGuarded
      File "stream_impl.dart", line 389, in _BufferingStreamSubscription._sendDone.sendDone
      File "stream_impl.dart", line 399, in _BufferingStreamSubscription._sendDone
      File "stream_impl.dart", line 283, in _BufferingStreamSubscription._close
      File "stream_controller.dart", line 772, in _SyncStreamController._sendDone
      File "stream_controller.dart", line 629, in _StreamController._closeUnchecked
      File "stream_controller.dart", line 622, in _StreamController.close
      File "socket_patch.dart", line 1798, in _Socket._onError
      File "zone.dart", line 1144, in _rootRunBinary
      File "zone.dart", line 1037, in _CustomZone.runBinary
      File "zone.dart", line 939, in _CustomZone.runBinaryGuarded
      File "stream_impl.dart", line 355, in _BufferingStreamSubscription._sendError.sendError
      File "stream_impl.dart", line 370, in _BufferingStreamSubscription._sendError
      File "stream_impl.dart", line 272, in _BufferingStreamSubscription._addError
      File "stream_controller.dart", line 768, in _SyncStreamController._sendError
      File "stream_controller.dart", line 648, in _StreamController._addError
      File "stream_controller.dart", line 600, in _StreamController.addError
      File "secure_socket.dart", line 786, in _RawSecureSocket._reportError
      File "zone.dart", line 1144, in _rootRunBinary
      File "zone.dart", line 1037, in _CustomZone.runBinary
      File "zone.dart", line 939, in _CustomZone.runBinaryGuarded
      File "stream_impl.dart", line 355, in _BufferingStreamSubscription._sendError.sendError
      File "stream_impl.dart", line 373, in _BufferingStreamSubscription._sendError
      File "stream_impl.dart", line 272, in _BufferingStreamSubscription._addError
      File "stream_controller.dart", line 768, in _SyncStreamController._sendError
      File "stream_controller.dart", line 648, in _StreamController._addError
      File "stream_controller.dart", line 600, in _StreamController.addError
      File "socket_patch.dart", line 1336, in new _RawSocket..<fn>
      File "zone.dart", line 1136, in _rootRunUnary
      File "zone.dart", line 1029, in _CustomZone.runUnary
      File "zone.dart", line 931, in _CustomZone.runUnaryGuarded
      File "zone.dart", line 968, in _CustomZone.bindUnaryCallbackGuarded.<fn>
      File "socket_patch.dart", line 1085, in _NativeSocket.reportError
      File "socket_patch.dart", line 923, in _NativeSocket.multiplex
      File "isolate_patch.dart", line 171, in _RawReceivePortImpl._handleMessage
    
    bug sentry 
    opened by devrnt 1
  • Compile time and runtime of build.gradle

    Compile time and runtime of build.gradle

    This issue was temp fixed by:

    project.configurations.all {
            resolutionStrategy.eachDependency { details ->
                if (details.requested.group == 'com.android.support'
                        && !details.requested.name.contains('multidex') ) {
                    details.useVersion "26.0.1"
                }
            }
        }
    

    It's a problem with a plugin who uses another version compile time 26.0.1 and runtime 28.0.1rc-2...

    help wanted known issue 
    opened by devrnt 2
  • Saying no internet after VPN connection

    Saying no internet after VPN connection

    Internet connection after VPN conn

    When you have connected to a VPN and turn it back to normal (wifi or cellular connection) it says there is no internet connection.

    bug help wanted open 
    opened by devrnt 1
Releases(v1.5.5)
  • v1.5.5(Oct 25, 2020)

  • v1.5.4(Oct 25, 2020)

  • v1.5.3(Sep 30, 2020)

  • v1.5.2(Jan 30, 2020)

  • v1.5.1(Jul 30, 2019)

  • v1.5.0(Jul 10, 2019)

    VPN Support was added

    Users can connect to a VPN before or while the application is opened, the app will recognize that the user is connected to a vpn by using a simple http.read Issue #25 was fixed

    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Jul 9, 2019)

    Magic search was added and some optimizations

    The following features were added:

    • Add magic search: allows users to search for movies based on a picture that they took With help of the Firebase ML image label kit users can take a picture and the app will search for movies based on the object that is detected in the picture
    • BlocProvider was replaced by the Provider package
    • Packages were upgraded to the latest version
    Source code(tar.gz)
    Source code(zip)
  • v1.3.3(Jun 9, 2019)

    Some issues where fixed:

    • UI tweak of a button on the details page
    • Issue where the torrent section was not updated fixed
    • Add pro link to the pro version in the Play Store
    Source code(tar.gz)
    Source code(zip)
  • v1.3.2(May 14, 2019)

  • v1.3.1(May 13, 2019)

  • v1.3.0(Apr 20, 2019)

    UI changes

    • Add cast section on movie details with possibility to watch the actor image in fullscreen
    • Add function where a notification redirects to the Play Store to update the app
    • Fix issue where movies were not fetched when app starts in airplane mode
    • Watch movie poster in fullscreen
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Apr 20, 2019)

    Light mode

    Following features were added:

    • Light theme
    • Add web torrents (if available) to the torrents list on the movie details screen
    • The grid layout got a small redesign
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Apr 14, 2019)

    Pro version

    Less ads are displayed in the free version. A (paid) pro version of the app is released with no ads in the app. The bloc pattern was added under the hood, this should improve performance.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Apr 1, 2019)

  • v1.0.0(Sep 28, 2018)

    Redesign

    This is the first major update with a completely redesign, like the home screen, movie detail page...

    A new logo was added and the presentation in the Play Store was updated as well.

    Source code(tar.gz)
    Source code(zip)
  • v0.7.1(Sep 23, 2018)

  • v0.7.0(Sep 22, 2018)

    Subtitles were added

    On the movie details screen you can select a subtitle and download the srt-file directly to your downloads folder by clicking on the download icon next to the dropdown. If no subtitles available it gives an appropriate label.

    All the subtitles are fetched from the site https://www.yifysubtitles.com. The DOM is manually searched to find the subtitles.

    This feature will require some changes if the website DOM is changed.

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Sep 19, 2018)

    Notifications were added

    As the title says now there is an option to send push notifications from FMC to the users. These notificaitons have no further purpose only to let know there is a new update available or for a review in the Play Store.

    This update brings bug #12 with it. This should fixed in the near future.

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Sep 19, 2018)

    Movie Suggestions

    The new drawer menu item 'Suggestions' is added. Here you get 4 movie suggestions based on your movies in your 'library'. A random movie from your 'library' is selected to suggest movie, if the refresh button is clicked a new random movie from your 'library' is taken to get suggestions.

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Sep 14, 2018)

    Drawer menu added

    This is rather a small update where I've added a sidemenu with the following menu items:

    • Search (same function as the one on the right-top search icon on the homescreen)
    • Rate on Google Play
    • Feedback (takes you to your default mail client)
    • Share app (takes you to the website app.jonasdevrient.be
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Sep 12, 2018)

    Bookmark option was added and small improvements

    • Add a movie to your library to keep track of them
    • Movies are written in a json file
    • Bug where movie with no genres is fixed
    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Sep 4, 2018)

    Bug fixes and small improvements

    • Fix bug where rating was converted to 0.0 when integer
    • Search icon disabled when no internet connection
    • Add link to download a Torrent client to the
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Sep 4, 2018)

    Filter screen added

    In this version the filter screen was added as a new funcitonality. There were also added some small improvements and fade-in animations for the movie cover and background.

    Now you can filter on genre, quality and rating.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Aug 29, 2018)

    Bug fixes

    Fix of issues on the GitHub page. The issues #1, #2, #3, #4 and #5 were fixed in this version.

    There was also added a placeholder for the movie cover image and a fade-in for the cover image.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Aug 24, 2018)

  • v0.0.1(Aug 22, 2018)

    Initial release

    This version will be used in production, but should not be considered in production stage. This stage is mainly to adapt to the feedback of the users.

    Source code(tar.gz)
    Source code(zip)
Owner
Jonas De Vrient
Hi there!
Jonas De Vrient
Find The Latest trending and upcoming movies and tv shows with MovieDB app. The app contains all info about movies and tv shows. find similar movies or shows, Browse all genres, video trailers, backdrops, logos, and posters.

MovieDB App Features. Dynamic Theming Search Functionality Onboarding-Screen Select favourite movie Home Screen Tranding movie Movies different catego

Ansh rathod 80 Dec 12, 2022
Flutter Application to purchase movie tickets, search for a movie, view movie details and proceed to select seats and movie times.

Flutter Application to purchase movie tickets, search for a movie, view movie details and proceed to select seats and movie times.

Stanley Valenzuela 6 May 25, 2022
This project is a rebuild of the existing movie colony https://github.com/debbsefe/Movie-Colony. Here's also a link to the figma file https://www.figma.com/file/XpLFNEsROiN1z6lwnNHMrU/Movie-app?node-id=2956%3A10161

Tvfiy Generated by the Very Good CLI ?? A Very Good Project created by Very Good CLI. Getting Started ?? This project contains 3 flavors: development

Eferha Mamus 3 Nov 12, 2022
A simple application connected with API (The Movie Database), related to movies. Application created using BLoC pattern and RxDart

MovieApp I will not hide that this is the most difficult application I have done so far (and I am still working on new features). It looks like this (

Adam Dybcio 9 Oct 28, 2022
Flutter-Movie - 😎 🎬 A Flutter movie app build with Fish-Redux and The Movie DB api.

movie A Flutter movie app build with Fish-Redux and TMDB api. ToDos redesign UI account detail customize stream support dark mode support localization

null 622 Dec 23, 2022
Pancake is an android streaming app for movies, for movies, tv-shows and anime.

Pancake Pancake is an android streaming app for movies, for movies, tv-shows and anime. Feature Ad free, No Ads whatsoever No tracking/analytics Insta

tejas 31 Jan 2, 2023
Movies hub flutter - A Movies Hub App Using Flutter

movies_hub_flutter A new Flutter project. Getting Started This project is a star

Mostafijur Rahman 5 Feb 2, 2022
A fully functional Movies Application built with Flutter. The application built with null safety and clean architecture, also uses OMDB API for fetching movies in the search item

Cinema DB Project Details This project uses null safety feature Project uses clean code architecture (Uncle Bob's Architecture) Project can run on bot

Dhruvam 2 Oct 1, 2022
A simple cat catalog project based on flutter

A simple cat catalog project based on flutter

gnehc 6 Jul 23, 2020
This project was writed with pure dart code,which means it's support both iOS and Android.

This project was writed with pure dart code,which means it's support both iOS and Android. Screenshot Todo show/hide animation Usage You can find the

吴述军 Brant 377 Dec 24, 2022
Petrus Nguyễn Thái Học 193 Dec 29, 2022
Ouday 25 Dec 15, 2022
Movie app monolith - Coffsy Movie App With Flutter

Coffsy Movie App This project aims to present an approach on how to implement a

Vilson Blanco Dauinheimer 11 Dec 21, 2022
Android l iOS mobile app that suggest random movies to watch 🍿

movirand A cross-platfrom mobile app that suggest random movies to watch Getting Started This project is a starting point for a Flutter application. A

Mhamed Ajjig 5 Jan 2, 2023
Functioning Doctor/Healthcare Catalog App created using Dart with Flutter. Stores and loads data from Firebase Firestore DB.

flutter_medical Functioning Doctor/Healthcare Catalog & Scheduling App created using Dart with Flutter. Stores and loads data from noSQL Firebase. Ins

John Uberbacher 209 Dec 19, 2022
Flutter-Movie - A Flutter movie app build with Fish-Redux na TMDB api

the applikation A Flutter movie app build with Fish-Redux na TMDB api. ToDos redesign UI account detail customize stream support dark mode support loc

Dominique Rwema Bagirishya 27 Jul 21, 2022
Movies application (Cubit, Android, iOS, macOS, Web, Windows)

Movies App (Cubit) Movies Application Platforms 1 - Android 2 - iOS 3 - macOS 4 - Web 5 - Windows Libraries & Tools Flutter 3.0.1 • channel stable Da

Alexandr Zherebtsov 1 Jun 7, 2022
Flutter movie review - Movie Review Clone Coding

movie_review Movie Review Application Clone Coding Getting Started This project is a starting point for a Flutter application. A few resources to get

ParkGil-hyeon 0 Jan 4, 2022
A Catalog Application Developed Using Flutter Framework/SDK.

Catalog_App A Catalog Application Developed Using Flutter Framework/SDK. Technologies Used Front-End : Flutter Custom Design (UI/UX) : VelocityX State

Adhil 2 Oct 9, 2022