首页 > 解决方案 > 如何在 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

标签: flutterdartflutter-provider

解决方案


这是不可能的。您必须提供不同类型的提供程序才能获得正确的值。

如果您多次使用同一个提供者,那么它将为您提供小部件树中最近提供者值的值。

他们的官方文档中也提到了这一点。

在这里查看。 我可以使用相同的类型获得两个不同的提供者吗?


推荐阅读