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 次 |
| 最近记录: |