我有一个类Store
,该类依赖于说类Credentials
,例如
class Credentials {
...
}
class Store {
...
Store(@required Credentials)
...
}
我的有状态窗口小部件的构建方法使用Store
中的东西来生成窗口小部件。
Credentials
对象是通过提供程序提供的。
我已经做到了
@override
didChangeDependencies() {
super.didChangeDependencies();
Credentials creds = Provider.of<Credentials>(context);
_store = Store(creds);
...
}
但是即使信誉保持不变,也可以看到_store被重新创建。 (我可以做一个信用平等检查,并在其中创建存储,但是对我来说这似乎只是一个解决方法)。 我只是不认为这是正确的方法。 我们如何优雅地解决这种模式?
答案 0 :(得分:0)
取决于如何使用Store
,您可以使用ProxyProvider
:
ProxyProvider<Credentials, Store>(
builder: (_, creds, __) => Store(creds),
child: ...,
)
或在创建新的Credentials
之前对Store
进行相等性检查:
Credentials credentials;
Store store;
@override
void didChangeDependencies() {
super.didChangeDependencies();
final credentials = Provider.of<Credentials>(context);
if (this.credentials != credentials) {
this.credentials = credentials;
store = Store(credentials);
}
}