flutter - 如何在 Flutter 中添加多个相同类型的 ChangeNotifierProvider
问题描述
是否可以添加相同类型的多个 ChangeNotifierProvider?
return MultiProvider(
providers: [
ChangeNotifierProvider<ValueNotifier<double>>(
create: (_) => ValueNotifier<double>(0.0),
),
ChangeNotifierProvider<ValueNotifier<double>>(
create: (_) => ValueNotifier<double>(0.0),
),
],
在我的构建方法中
@override
Widget build(BuildContext context) {
ValueNotifier<double> firstNotifier = Provider.of(context, listen: true);
ValueNotifier<double> secondNotifier = Provider.of(context, listen: true);
print('First value ${firstNotifier.value} Second value ${secondNotifier.value}');
...
onTap:(){
firstNotifier.value = 10.0;
secondNotifier.value = 30.0;
}
两个打印值相同 第一个值为 10 第二个值为 10
解决方案
这是不可能的。您必须提供不同类型的提供程序才能获得正确的值。
如果您多次使用同一个提供者,那么它将为您提供小部件树中最近提供者值的值。
他们的官方文档中也提到了这一点。
在这里查看。 我可以使用相同的类型获得两个不同的提供者吗?
推荐阅读
- typescript - 动态设置接口属性的最佳方法
- python-3.x - Python compileall:.pyc 文件中的幻数错误
- asp.net-core - Asp.net core 线程安全全局变量
- kotlin - 来自插件的 gradle 多项目任务配置 - 如何配置每个项目?
- python - 无法通过 ip python 向 SOAP 发送 https 获取请求
- css - CSS动画不断跳回第一张图片
- json - 如何从可编码结构中检索数据,该结构可能将空数组作为其值之一,而不是字典?
- django-rest-framework - 如何基于序列化程序(drf-yasg)获取分页响应模式
- typescript - 为什么某些包的自动导入不起作用?
- java - 如何从java中的类对象列表中获取第一个匹配元素的索引(不使用任何第三方库)