Application used to to search for artists, pick one of their top albums and save it locally.
Project is built using redux state management
The lib folder is divided into three folders. Core, data, shared.
-
Core is divided into five folders:
- actions: Contains redux actions classes
- middlewares: Contains redux middleware layer
- reducers: Contains redux reducers layer
- main app reducer layer
- loading reducer handles app in loading state
- search reducer handles load search result in app state
- top_albums reducer handles load top albums in app state
- album_details reducer handles load album details in app state
- models: Contains app state model responsible for holding the Application State
- screens: Contains four main screens of the project and widgets folder
- main : shows a list of saved albums in database
- search : search for artist using artist name
- top albums : show a list of artist top albums
- details : show main details(albumName, tracks, image) of album
- widgets : contains the shared widgets
-
data is divided into three folders:
- data source : Contains abstract class of Data source and Remote data source(handles data retrieved from internet)
- models: Contains api data models response
- repositories: Contains app repository handles as if we want in future to extend any app functionality
- services: Contains LastFm apis and navigation service
-
Shared: Contains files used in whole app utils, screens routes and app images.
- unit testing for redux reducers checking the redux actions performed well
- Run
flutter packages get
first to download the dependencies. - Run
flutter test
to execute tests. - Run
flutter run
to try it live on running emulator or usb connected device. - Run
flutter build apk
to generate APK file. - Run
flutter build ios
to package iOS app.