【发布时间】:2021-03-03 04:12:39
【问题描述】:
有没有办法在不再次传递参数的情况下访问提供的“.family”更改通知器(已经实例化,传递正确的参数)的实例?
供应商
当您创建 ChangeNotifier 的提供者(需要参数)时,您可以获得与 Provider.of<ChangeNotif>(context) 提供的相同的更改通知;
class ChangeNotif extends ChangeNotifier {
final String id;
const ChangeNotif(this.id);
}
ChangeNotifierProvider(create: (_) => ChangeNotif("dash"));
使用正确的参数创建提供程序后,您可以在该小部件树的任何位置获取它提供的任何内容,而无需像 Provider.of<ChangeNotif("dash")>(context) 之类的任何语法,而是 Provider.of<ChangeNotif>(context)。
在河中
由于在获取它的实例时必须将参数传递给提供者,因此我必须将提供者分配给一个变量,以便将其传递给需要提供者提供的更改通知器的子代。
final changeNotifProvider = ChangeNotifierProvider.family<ChangeNotif, String>((ref, id) => ChangeNotif(id));
class A extends HookWidget {
build() {
final _changeNotifProvider = changeNotifProvider("dash");
final _changeNotif = useProvider(_changeNotifProvider);
return Column(
children: [
B(),
c(_changeNotifProvider),
]
);
}
}
有没有办法获得实例化的_changeNotif 而无需将其作为参数传递给子小部件?有什么方法可以在另一个不是 A 子级的小部件中获取相同的 _changeNotif 实例(例如在 Provider 中使用 Provider.of<ChangeNotif>(context) 而无需传递新参数)?
【问题讨论】:
标签: flutter flutter-provider state-management riverpod