Flu*_*ase 10 dart firebase flutter google-cloud-firestore flutter-packages
我想使用provider
( ChangeNotifierProvider
) 和ChangeNotifier
管理应用程序状态。但是我如何从另一个模型中的一个模型访问状态?
用例:在聊天应用程序中,一种用于存储用户信息的模型。其他模型使用用户信息(例如用户 ID)调用数据库(Firestore)并获取聊天数据流。
例如:
class Model1 extends ChangeNotifier {
final List<Item> items = [];
class Model2 extends ChangeNotifier {
//Access items from Model1 here
items;
Run Code Online (Sandbox Code Playgroud)
这可能吗?我不喜欢非常大的模型,因为很难维护。
??谢谢!
Rém*_*let 10
使用provider
,一个模型不会访问另一个模型。
相反,您应该使用ProxyProvider
, 来组合其他人的模型。
您的模型将如下所示:
class Foo with ChangeNotifier {
int count = 0;
void increment() {
count++;
notifyListeners();
}
}
class Bar with ChangeNotifier {
int _count;
int get count => _count;
set count(int value) {
if (value != count) {
_count = value;
notifyListeners();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用ChangeNotifierProxyProvider
这种方式(假设你的小部件树中有一个更高的 `ChangeNotifierProvider ):
ChangeNotifierProxyProvider<Foo, Bar>(
initialBuilder: (_) => Bar(),
builder: (_, foo, bar) => bar
..count = foo.count, // Don't pass `Foo` directly but `foo.count` instead
)
Run Code Online (Sandbox Code Playgroud)
从v4开始,提供ChangeNotifierProxyProvider
者可以像这样构建:
ChangeNotifierProxyProvider<Foo, Bar>(
create: (_) => Bar(),
update: (_, foo, bar) => bar
..count = foo.count,
)
Run Code Online (Sandbox Code Playgroud)
请注意,initialBuilder:
已更改为create:
和
builder:
update:
归档时间: |
|
查看次数: |
9570 次 |
最近记录: |