A Flutter project using clean architecture.
URL
策略:
Hash
, 默认策略, 例如flutterexample.dev/#/path/to/screen
Path
, 例如flutterexample.dev/path/to/screen
如果想从 Hash
策略改为 Path
策略, 可使用 flutter_web_plugins
中的 usePathUrlStrategy()
方法:
// main.dart
void main() {
// 使用 PathUrlStrategy
// https://flutter.cn/docs/development/ui/navigation/url-strategies#configuring-the-url-strategy
usePathUrlStrategy();
runApp(const MainApp());
}
run
:
flutter run -d chrome
# flutter 在 web 平台上默认渲染方式为 canvaskit
# flutter run -d chrome --web-renderer canvaskit
# 更改渲染方式为 html
flutter run -d chrome --web-renderer html
build
:
flutter build web
# flutter build web --release
flutter build web --web-renderer html --release
flutter build web --web-renderer canvaskit --release
// tree-shake
flutter build web --tree-shake-icons
dart template
:
// user.dart
import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';
@JsonSerializable()
class User {
final String name;
final int age;
User({required this.name, required this.age});
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
一次性生成 *.g.dart :
# https://docs.flutter.dev/data-and-backend/json#one-time-code-generation
flutter pub run build_runner build --delete-conflicting-outputs
# flutter pub run build_runner build
持续生成 *.g.dart :
# https://docs.flutter.dev/data-and-backend/json#generating-code-continuously
flutter pub run build_runner watch --delete-conflicting-outputs
# flutter pub run build_runner watch
运行后提示 Deprecated. Use
dart run instead.
, 将 flutter pub run
改为 dart run
:
# 一次性
dart run build_runner build
# 持续
dart run build_runner watch