A boilerplate project for Flutter using RiverPod, Dio, go_router, Freezed and generated with very_good_cli.
This is a very simple Boilerplate application, this has following features.
- User can Sign In and Up
- After signing in he can see a list of items
It uses a mock json server which doesn't store or validate anything, so for signing in/up any email, password will simply work.
RiverPod was used for state management, but there's an old implementation with Flutter bloc as well, you may check out bloc branch, though that branch doesn't have many of the latest changes.
You can go through this Flutter Starter Pack.
This project contains 3 flavors:
- development
- staging
- production
To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:
# Development
$ flutter run --flavor development --target lib/main_development.dart
# Staging
$ flutter run --flavor staging --target lib/main_staging.dart
# Production
$ flutter run --flavor production --target lib/main_production.dart
*Flutter Boilerplate works on iOS, Android, and Web.
You can run all these scripts manually or could use MakeFile / Derry and maintain a file, where you can define all those scripts and run in a very convinient way. All the scripts for this project is defined here derry scripts and makefile scripts
Example:
run make watch
or derry watch
instead of
flutter pub run build_runner watch --delete-conflicting-outputs
run make build
or derry build
instead of
flutter pub run build_runner build --delete-conflicting-outputs
or run make build_apk_dev
or derry build_apk_dev
instead of
flutter build apk --flavor development -t lib/main_development.dart
To run all unit and widget tests use the following command:
$ flutter test --coverage --test-randomize-ordering-seed random
To view the generated coverage report you can use lcov.
# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/
# Open Coverage Report
$ open coverage/index.html
- To add a new localizable string, open the
app_en.arb
file atassets/land/arb/en.json
.
{
"home" : "Home",
"loading" : "Loading",
"email" : "Email",
"password" : "Password",
"name" : "Name",
"sign_in" : "Sign In",
"sign_up" : "Sign Up"
}
- After adding new
import 'package:easy_localization/easy_localization.dart';
@override
Widget build(BuildContext context) {
return Text("helloWorld".tr());
}
- Updating it on daily basis as much as possible, work in progess[WIP].
- Support by clicking the β button on the upper right of this page. βοΈ