User Project

Description:

A User project created in flutter using Riverpod. It supports both android and ios, clone the appropriate branches mentioned below:

For Mobile: https://github.com/amalnaami/user_task

How to use

Step 1

Download or clone this repo by using the link below:

  https://github.com/amalnaami/user_task

Step 2

Go to project root and execute the following command in console to get the required dependencies:

  flutter pub get

Step 3

Run project:

  flutter run

🚀 Explain the flow off app:

This app contain two screens the first screen will show a list of users and when click on any user it will move you to second screen which contain user image and his posts.

I upload screen Recording, that explains almost the flow of the task

🚀 Screen Record

usertask.mp4

I also handel if there is api status failed or disconnect internet issue.

🚀 Screenshot

Rules:

  • Publish the project on Github

  • Define App Text Theme which contain

    • TextTheme

    • App Font Family

  • Define color palette for the app on Constant.

  • For API calls : Dio

  • Log APIs using LogInterceptor in Dio package

  • State management: Riverpod

  • For route navigation: GoRoute

Pointers:

  • Provide Localization options (English and Arabic)
  • Reusable UI components

🚀 App Features

  • Get List Of Users.

  • Get Posts to every user.

🚀 Libraries & Tools Used

🚀 Folder Structure

Here is the core folder structure which flutter provides.

| flutter-app/
  |- android
  |- build
  |- ios
  |- lib
  |- test

Here is the folder structure we have been using in this project

 

|-- lib
    |-- core (Contains any code can shared between features such as app theme, constants, etc.)
    |-- models
    |   |-- feature_name_model.dart
    |-- providers (Contain all feartures provider)
    |-- repositories
    |   |-- feature_repository.dart
    |-- screens
    |   |-- screen_name
    |   |-- screen_widgets
    |-- services (Contain api manger and all Api Status)
    |-- utils 
    |   |-- localization
    |   |-- shared_widgets (Like loader and errors)
    |-- main 
    |-- route (Conatin all router and screens of all)

Routes

routes

Main

main

Conclusion

I will be happy to answer any questions that you may have on this approach 🙂

Assignment From Floward