Assignment for Flutter Developers
Goal of the assignment is to:
-> Show the capability of adjusting to the technical environment
-> Demonstrate the will to develop and test high quality features/functionalities
-> Test the candidate knowledge on network calls, local database and state management.
-> Test the candidate on clean-coding field
-> Test the candidate on project scaling field
Assignment Task:
Create a Flutter project that demonstrates server-client communication, navigation flow and a certain form of State Management.
Install the Flutter environment on your computer, along with a visual code editor (preferably VS Code) and run this template application.
The app contains 2 sections of tasks as follows:
Home:
This section/screen you will need to demonstrate your skills related to network calls and local storage.
-
Implement setup for network calls and local storage. You are free to use packages of your choice for both. Example: Https, Dio, Chopper and Hive for local db.
-
Fetch the data from open apis for testing such as :
https://any-api.com/
Homepage
You are free to use any open source api of your choice.
- Save the response to local storage of your choice and update the ui according using state management.
- In the page, a search bar is present at the top. It should be functional by filtering your locally saved data.
All Tasks and Complete Tasks
This section/screen you will need to demonstrate your skills related to state management. Please use a state management lib of your choice i.e provider, bloc, riverpod, getX etc.
Its a simple todo app where you will need to fetch data from firebase firestore and update the ui according to there completed status.
The user should be able to complete, read, update and delete the tasks i.e CRUD operations.
The data should be update according in firebase firestore as well as reflect in the ui according as soon as one of the operations is done. Try to notify the user by showing some sort of message based on there operations.
The ui should be updated accordingly based on the status completed for tasks. This state should updates the UI. Therefore you should be able to complete a task on the ‘Tasks’ page and it appears on the ‘Completed Tasks’ page
Test Cases:
Try to demonstate at least one for each of the following:
- Unit Test
- Widget Test
Add any additional functionality / cleanup you think would improve the app (bonus points)
After Completion:
Upload the code on your github and send us a link :
Note:
- Try to implement extensions where every you think it can be done.
- Basic ui should work for showing informations. Dom’t waste your much time on UI.
- Error handling should be implemented properly.
Thank you.