Функция в классе ChangeNotifier не вызывается

У меня есть приложение Flutter с поставщиком в качестве диспетчера состояний. ВChangeNotifierProvier находится в самом верху моего приложения (то есть над виджетом MaterialApp).

  1. у меня есть ChangeNotifier класс следующим образом:
class AmountManager extends ChangeNotifier {
  String amount;
  void changeAmount(String newAmount) {
    amount = newAmount;
    notifyListeners();
  }
}
  1. Затем у меня есть еще один класс с TextField:
class MyTextField extends StatelessWidget {
  @override 
  Widget build(BuildContext context) {
    return TextField(
      //some decorations here
      onChanged(value) {
        Provider.of<AmountManager>(context).changeAmount(value);
      },
    );
  }
}
  1. А в другом классе в главном приложении я называю amount переменная:
class MyText extends StatelessWidget {
  @override 
  Widget build(BuildContext context) {
    return Text(
      Provider.of<AmountManager>(context).amount,
    );
  }
}

Проблема в том Provider.of(...)метод не может быть вызван. Я просмотрел несколько руководств и не смог понять причину этого. Если я использую статический текст вместо объекта AmountManager, он работает. Программа использует только начальное значениеamount в MyText учебный класс.

Как вы думаете, в чем я ошибаюсь?

Заранее спасибо,

1 ответ

Решение

Тебе нужно listen: false когда вы используете Provider.of() в onChanged.

onChanged: (value) {
  Provider.of<AmountManager>(context, listen: false).changeAmount(value);
},

См. Это для деталей.

Другие вопросы по тегам