Skip to content

Latest commit

 

History

History
60 lines (30 loc) · 2.28 KB

README.md

File metadata and controls

60 lines (30 loc) · 2.28 KB

A flutter project implementing themoviedb APIs using bloc.

Plugins and Packages used

  1. flutter_bloc:

    Used for the basic implementation of BLoC architecture.

  2. equatable:

    Comparision between multiple instances of Events and States is performed throught the props list provided by this package.

  3. geolocator:

    Provides access to the on-device location APIs, allowing managing Location Permission and Service.

  4. geocoding:

    Uses on-device APIs to perform easy geocoding and reverse-geocoding.

  5. dio:

    HTTP networking client to perform API calls.

  6. hive:

    Local Database plugin. Uses Boxes for data storage.

  7. flutter_cache_manager:

    Provides a cache manager used to Pre-Cache images.

  8. Other Packages:

    flutter_svg, google_fonts, cached_network_image and shimmer are used to help develop the App UI.

Notable Classes

  1. LoggingIngterceptor:

    Works with Dio HTTP client to log API calls' Request and Responses for Easy Debugging.

  2. DotsIndicator:

    Works in conjunction with Now Playing movies list to display a page and index indicator.

  3. NowPlayingClipper:

    Uses a Path to clip it's child to draw a fancy shape.

Useful Techniques

  1. Performed an auto scroll after each page fetched for Now Playing section. This helped refresh the DotsIndicator state to display the correct digits while also providing for a good UX.
  2. Pre-caching the first 2 images from Now Playing and Top Rated API Call responses for a smooth loading experience going into Home screen. 2 for each API because the first visible tiles for each List would be the first 2 elements.
  3. Opened a Hive Box soon as the app launches so Local Database can be accessed without any delays of operation.
  4. flutter_launcher_icons for generating Launcher Icons.