Create a To-do List Flutter app managing CRUD with Firebase, using RiverPod as state management and dependency injection.
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.
This app has been enabled with Android, iOS, Web, and macOS flavors with the below environments (develop and production). For Windows (coming soon).
Actually the project has been implemented with Navigator 2.0 or Route API from scratch (It doesn't use any packages).
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}
├── categories
├── id (generated)
├── emoji (String)
├── name (String)
├── todoSize (Number)
├── todos
├── id (generated)
├── categoryId (String)
├── finalDate (Number)
├── isCompleted (Boolean)
├── subject (String)
- You must have a Firebase Project already created.
- You must install
firebase tools
andFlutterFire CLI
on your local machine.- To install
firebase tools
, could you guide here - After install
firebase tools
, you must log in with your Google account. - To install
FlutterFire CLI
, you must run the command below.dart pub global activate flutterfire_cli
- To install
- Clone this project.
- If you want to rename the bundles for each platform, you must do the steps below.
- For Android, you must rename the bundle id on
app/build.gradle
. - For iOS and macOS in XCode IDE, you select
Runner
and change the 'Bundle Identifier' text. - You must run the
FlutterFire CLI
command to configure your Firebase project. The project has 2 environmentsdev
andproduction
.- If the project is
production
, you must run this command. Automatically, it creates a file with the namelib/firebase_options.dart
flutterfire configure --project=<YOUR_PROJECT_ID>
- If the project is
dev
, you must run this command. However, you must set the out file in this caselib/firebase_options_dev.dart
flutterfire configure --project=<YOUR_PROJECT_ID> --out=lib/firebase_options_dev.dart
- If the project is
- For Android, you must rename the bundle id on
- Run project and enjoy 😄
Platform | Preview |
---|---|
Android | |
iOS | |
macOS | |
Web | |
Windows | Coming soon |
- 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)
- 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)