一直在做一些关于 Flutter 依赖注入的研究,我有点选择了 Inject.dart
但是,我在使用注入时遇到了一些麻烦。
有没有办法简化注入类的实例化?
我有这个 MyClass,我需要实例化传递 HomeStore,但是,如何在不调用全局 acessor 的情况下对其进行初始化?(例如在注入器文件上制作的那些(。
似乎我可以用 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);
}
并且您通过 API 获取了User
数据,并希望创建一个User
变量并用数据填充它,而无需手动执行此操作。
实际上,您只需使用这一行代码即可做到这一点
。User user = User.fromJson(jsonUser);
这些甚至可以自动 json 序列化User
类中的类,只要这些类也是 json 可序列化的,这是用@JsonSerializable()
因此,即使只有一行代码,如果来自 API 的jsonUser
也有UserDetail
、UserType
和UserLocation
的值,您也可以访问它们。