一、项目简介
此项目为学习 Flutter 做的一个简单的 WanAndroid 客户端
二、项目截图
三、需要注意的地方
3.1 GetX
GetX 是 Flutter 上的一个轻量且强大的解决方案:
- 高性能的状态管理
- 智能的依赖注入
- 便捷的路由管理
目前,Flutter有几种状态管理器。但是,它们中的大多数都涉及到使用ChangeNotifier来更新widget,
这对于中大型应用的性能来说是一个很糟糕的方法。
你可以在Flutter的官方文档中查看到,ChangeNotifier应该使用1个或最多2个监听器,这使得它们实际上无法用于任何中等或大型应用。
刚从 Android 学习 Flutter 的同学,一开始对 Flutter 中的状态管理可能会一头雾水,强烈建议在了解 InheritedWidget 和 Provider 之后,使用 GetX 库进行开发
3.2 Flutter 中的异步编程
3.3 json_serializable 使用说明
- 首先在 pubspec.yaml 添加如下依赖:
dependencies:
json_annotation: ^4.1.0
dev_dependencies:
build_runner: ^2.0.0
json_serializable: ^5.0.0
- 新建 model 类, 例如:
import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';
@JsonSerializable()
class User {
User(this.name, this.password);
String name = "";
String password = "";
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
这里有几个地方需要注意:
- 在文件顶部添加 part 'user.g.dart',此时会报错,先不用管
- 在需要转换的实体 dart 类 前加入 @JsonSerializable 注解,标识需要 json序列化处理
- fromJson()、toJson() 方法的写法是固定模式,按模板修改即可
- User.g.dart 和 文件名 需要保持一致,否则执行以下命令无效
如果对 fromJson()、toJson() 用法不了解的话,建议查看 Json转Dart Model类
- 在 Terminal 或者 windows 的命令行中, 切换到项目的根目录, 然后执行:
flutter packages pub run build_runner build
执行成功后可以看到,在 user.dart 的同级目录中自动生成了 user.g.dart 文件