flutter - Flutter / Inject.dart - 是否可以为“提供的”类实例化简化或生成代码?
问题描述
一直在做一些 Flutter 依赖注入的研究,我选择了 Inject.dart
但是,我在使用注入时遇到了一些问题。
有没有办法简化注入类的实例化?
我有这个 MyClass,我需要通过 HomeStore 实例化它,但是,如何在不调用全局访问器的情况下实例化它?(例如在 Injector 文件上制作的那些)。
看来我可以只使用 Get_It 包,否则会得到相同的结果,并且无需代码生成,但我不太喜欢整个全局访问。
我的样本:
// current code
class MyClass(){
store = HomeStore(AppInjector().globalHudStore, AppInjector().globalErrorStore);
}
// desired code
class MyClass(){
@instance ?
store = HomeStore();
store = HomeStore.instanciate?();
}
class HomeStore {
@provide
HomeStore(this._globalHudStore, this._globalErrorStore);
final GlobalHudStore _globalHudStore;
final ErrorStore _globalErrorStore;
}
解决方案
如果您愿意使用 json,您可能需要考虑这个包json_serializable
。只需在 中搜索即可pub.dev
。
我可以举一个小例子。假设您有一个User
班级/模型。
part 'user.g.dart';
@JsonSerializable()
class User {
int id;
@JsonKey(name: 'user_type_id')
int userTypeId;
String email;
@JsonKey(name: 'user_detail')
UserDetail userDetail;
@JsonKey(name: 'user_type')
UserType userType;
@JsonKey(name: 'user_location')
UserLocation userLocation;
User();
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
并且您User
通过 API 获取数据,并希望创建一个User
变量并用数据填充它,而无需手动执行此操作。
你实际上可以用这行代码做到这一点
User user = User.fromJson(jsonUser);
这些甚至会自动 json 序列化你的类中的User
类,只要这些类也是 json 可序列化的,它是用定义的@JsonSerializable()
因此,即使只有那一行代码,如果jsonUser
来自 API 的 也具有、 和的值UserDetail
,您也可以访问它们。UserType
UserLocation
推荐阅读
- shell - 使用 awk 传递第一列的特定字符串值,如果它不存在那么应该传递 0 而不是 NULL?
- c++ - 存储多种颜色并从一种颜色切换到另一种颜色
- javascript - 如何在浏览器中显示PPT?
- android-studio - 如何解决“无法解析 com.shawnlin:number-picker:2.4.8。” Android Studio 中的错误
- matlab - 请指导我拆分图像
- javascript - 如何优化 canActive 角度的代码
- java - 尝试读取资源文件时 InputStream 为空
- anylogic - 如何从 AnyLogic 获得最终图表?
- react-native - 如何在 React Native 中为 Android 设置组件 RTL
- xml - 使用 ,(逗号)和使用 | 有什么区别?(管道)在'除了'xslt?