Giter VIP home page Giter VIP logo

fluttercinematic's Introduction

Flutter Cinematic

This app is a Flutter port of the native Android App Cinematic. My intention in creating this app was understanding the intricacies of building apps in Flutter. Just like the native Android App this app does not make any efforts in being a nicely architectured application. That being said the whole point is to showcase Flutter's capabilities for building simple apps and to understand key difference and advantages to native development.

Overview

The app uses the Movie DB Public API as a data sources and uses the standard dart libraries for making network requests.

In terms of UI, the goal was replicating the Android design as closely as possible to understand the possibilities that Flutter offers for crafting UIs.

Building from Source

To build this app from source you will have to obtain an API-key from TMDB right here. Set this key to the constant API_KEY in constants.dart to run the app. Additionally, the app now uses Dart2 which means that you should enable that in your IDE if you haven't done so yet.

Video

In App Experience

Learnings

Creating this app and learning Flutter in general felt like a gift for developers. It significantly increased development velocity by, amongst others, reducing development cycles and the ability to create reactive, modular components. Coming from the realms of Android, those are the things that stood out to me:

  • Creating beautiful UIs is easier with Flutter
  • Avoiding to write boilerplate code (XML layouts, adapters etc.)
  • Creating UIs in a declarative way without dealing with the shortcomings of Android's Databinding
  • Hot Reload - this one is a game-changer
  • Dart is not that bad of a language, but it doesn't get close to Kotlin. I think for the Usecase of Flutter Dart actually makes a lot of sense
  • The ability to not worry about state changes in the UI. The Widget will take care of the rendering using it's properties or state

License

This project utilizes the MIT License

fluttercinematic's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fluttercinematic's Issues

list not show in all tabs

Hi,
I had checked out the newest code. My dart version is dart 2.
But It still show the bellow message in the app

"Sorry, there was an error loading the data!"
Thanks

Overflow in media detail

Hello,
We found a problem. It arises in the detail view of the movie or tv show when the size of the elements of the categories of these exceed the limit of the screen. This problem originates because the widget that has the Labels is a Row, it has a fixed size, therefore, when the size of the categories is greater, it generates the error. To solve this error, it is necessary to change the Row for a widget of the ListView type, which allows scrolling when the size is larger.

cee31446-dc5b-427d-b708-06ebf71bb643

missing constants.dart

Hello,

there is missing file in package:movies_flutter/util/constants.dart
So I can't run your code

Media backdrop obstructed on notched display

When tapping on a movie or show, the backdrop expands to the top of the screen which causes partial obstruction on notched displays.

Example:
The box over the top half of Venom's face is the area the notch on the Pixel 3 XL is located.
image

Help plz

Compiler message:
file:///C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/rxdart-0.16.7/lib/src/observable.dart:1826:57: Error: The method 'retype' isn't defined for the class 'Stream'.

  • 'Stream' is from 'dart:async'.

Memory leak

Hello,
We found a memory problem. There is no control to overlay views as we can infinitely delve into actors, movies and TV show, the stack can grow indefinitely and this causes the memory usage of the application to grow indefinitely as well, until the application reset or an OOM error occurs. This is an image of the performance on an android device, when the memory reaches 600MB, the application closes.
Captura de Pantalla 2020-05-15 a la(s) 6 39 39 a  m

scoped_model version

My Dart SDK is v2.5.0 and does not work with scoped_model v0.2.0 unless scoped_model is updated. Had to update to v1.0.1

Connectivity scenarios

Hello,
We found that the application does not handle connectivity scenarios, this would improve the user experience. There is a message in the view is there was an error in the data load, this message is sent if it is not possible to obtain the response of the data request. This message is only shown for the views that have lists of movies or tv shows, but for the others it does not exist. This happens when the user browses the application and loses the connection. For example, in the case of the detail of an actor, this verification does not exist, so it does not throw error messages, and since there is no data, the progress indicator remains fixed.

Failed to reach maximum capacity of shared preferences for favorites.

Hello,
We found a local data storage problem, when 100 movies stored in favorites in shared preferences are exceeded, it generates a memory error. This forces the application to stop, the solution lies in implementing another storage method for this type of local data on the device.

sorry there was an error loading media data

after apply the changes suggested by pull request #24 opened on 10 May by @kkpenaranda
the app runs on android studio 3.4.2.
but in media_list.dart

 Widget _getContentSection() {
    print("_getContentSection");
    print(_loadingState);
    switch (_loadingState) {
      case LoadingState.DONE:
        return ListView.builder(
            itemCount: _movies.length,
            itemBuilder: (BuildContext context, int index) {
              if (!_isLoading && index > (_movies.length * 0.7)) {
                _loadNextPage();
              }

              return MediaListItem(_movies[index]);
            });
      case LoadingState.ERROR:
        return const Text('Sorry, there was an error loading the data!');
      case LoadingState.LOADING:
        return const CircularProgressIndicator();
      default:
        return Container();
    }
  }

on widget _getContentSection first print LoadingState.LOADING
then print LoadingState.ERROR
and get the text 'Sorry, there was an error loading the data!'
the api_key is working return results like:

{
    "page": 1,
    "total_results": 10000,
    "total_pages": 500,
    "results": [
        {
            "popularity": 481.769,
            "vote_count": 364,
            "video": false,
            "poster_path": "/zfE0R94v1E8cuKAerbskfD3VfUt.jpg",
            "id": 474350,
            "adult": false,
            "backdrop_path": "/p15fLYp0X04mS8cbHVj7mZ6PBBE.jpg",
            "original_language": "en",
            "original_title": "It Chapter Two",
            "genre_ids": [
                35,
                27
            ],
            "title": "It Chapter Two",
            "vote_average": 7.2,
            "overview": "27 years after overcoming the malevolent supernatural entity Pennywise, the former members of the Losers' Club, who have grown up and moved away from Derry, are brought back together by a devastating phone call.",
            "release_date": "2019-09-06"
        },

but i can't find why this doesn't show the list in the main screen.
some one can help to solve this?
thanks

can't get api-key

Can you provide an API-KEY? I am a Chinese developer,I can't get it from there. thanks

Failed to build release for Android devices. No issue on iOS devices.

RMBP➜ FlutterCinematic git:(master) ✗ >flutter run -d all --release
Running "flutter packages get" in FlutterCinematic... 0.5s
Initializing gradle... 0.9s
Resolving dependencies... 1.8s
Launching lib/main.dart on MI 6 in release mode...
Running 'gradlew assembleRelease'...
VMIsolate(CodeSize): 4613
Isolate(CodeSize): 1699574
ReadOnlyData(CodeSize): 2484048
Instructions(CodeSize): 5880224
Total(CodeSize): 10068459
Gradle build failed to produce an Android package.

Can't run Android >"<

Because scoped_model 0.2.0 requires SDK version <2.0.0 and no versions of scoped_model match >0.2.0 <0.3.0, scoped_model ^0.2.0 is forbidden.
So, because movies_flutter depends on scoped_model ^0.2.0, version solving failed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.