是否可以添加多个相同类型的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
2条答案
按热度按时间7hiiyaii1#
有一种优雅的方法可以做到这一点,但我们必须创建两个单独的类来扩展changeNotifierProvider
和第二通知器作为;
然后,在构建方法中,您可以将它们作为
然后,您可以按以下方式对其进行更改
在MultiProvider代码中,则可以将提供程序 Package 为
这就行了
0md85ypi2#
不可能这样做。您必须提供不同类型的提供程序才能获得正确的值。
如果您多次使用同一个提供程序,那么它将为您提供小部件树中最近的提供程序值。
他们的正式文件中也提到:Can I obtain two different providers using the same type?