crud_todo_app
crud_todo_app copied to clipboard
Create a To-do List Flutter app managing CRUD with Firebase, using RiverPod as state management and dependency injection
Flutter · CRUD TODO App
Create a To-do List Flutter app managing CRUD with Firebase, using RiverPod as state management and dependency injection.
Getting Started (Firebase)
- To execute the app, you have to Firebase Project already created.
- Create an app in Firebase for Android iOS, Web and Desktop (Mac) with the existing project.
- For Android you must rename the bundle Id on
app/build.gradle
. - For iOS in XCode IDE, you select
Runner
and change the 'Bundle Identifier' text. - For Web, you must follow this link
- For Desktop for Mac in XCode IDE, you select
Runner
and change the 'Bundle Identifier' text.
- For Android you must rename the bundle Id on
Getting Started (Flutter)
- Clone this project.
- In Android, set
google-services.json
file inapp
folder. - In iOS, set
GoogleServices-Info.plist
file inRunner
folder. - In Web, you must follow this link
- In Desktop for Mac, set
GoogleServices-Info.plist
file inRunner
folder. - Run project and enjoy :smile:
Firebase Scheme
├── categories
├── id (generated)
├── emoji (String)
├── name (String)
├── todoSize (Number)
├── todos
├── id (generated)
├── categoryId (String)
├── finalDate (Number)
├── isCompleted (Boolean)
├── subject (String)
Navigator 2.0
Actually the project has been implemented with Navigator 2.0 or Route API.
Deep linking
For using deep links with flutter without any packages, review this link
Run deep links in iOS, use the command below:
xcrun simctl openurl booted crudtodoapp://crudtodoexample.com/categories/{categoryId}/todo/{todoId}
Run deep links in Android, use the command below:
~/Library/Android/sdk/platform-tools/adb shell am start -a android.intent.action.VIEW \ -c android.intent.category.BROWSABLE \ -d crudtodoapp://crudtodoexample.com/categories/{categoryId}/todo/{todoId}
Responsive and Adaptive
This To-do app project uses responsive and adaptive principles to use it on different screen sizes and any devices, like mobile phones, tablets, computers, notebooks, etc.
Used packages
Dependencies
- Firebase (firebase_core , cloud_firestore)
- Riverpod (hooks_riverpod)
- Hooks (flutter_hooks)
- Json annotation (json_annotation)
- Freezed annotation (freezed_annotation)
- Equatable (equatable)
- Intl (intl)
- Google fonts (google_fonts)
- Flutter slidable (flutter_slidable)
- Context menus (context_menus)
- Window size (window_size)
- Dart emoji (dart_emoji)
- UUID (uuid)
Dev dependencies
- Build runner (build_runner)
- Freezed (freezed)
- Json serializable (json_serializable)
- Mocktail (mocktail)
- Mockito (mockito)
- Remove from coverage (remove_from_coverage)
- Very Good Analysis (very_good_analysis)
Help mockito reference
Mockito Null Safety recipe link