Как добавить несколько ChangeNotifierProvider в одном типе во флаттере - PullRequest
2 голосов
/ 06 апреля 2020

Можно ли добавить один и тот же тип нескольких 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

1 Ответ

2 голосов
/ 06 апреля 2020

Это невозможно сделать . Вы должны предоставить разных типов провайдеров, чтобы получить правильное значение.

Если вы используете одного и того же провайдера более одного раза, это даст вам значение ближайшего провайдера в дереве виджетов.

Это также упомянуть в их официальной документации.

проверить здесь. Могу ли я получить двух разных провайдеров, использующих один и тот же тип?

...