Функция в классе ChangeNotifier не вызывается
У меня есть приложение Flutter с поставщиком в качестве диспетчера состояний. ВChangeNotifierProvier
находится в самом верху моего приложения (то есть над виджетом MaterialApp).
- у меня есть
ChangeNotifier
класс следующим образом:
class AmountManager extends ChangeNotifier {
String amount;
void changeAmount(String newAmount) {
amount = newAmount;
notifyListeners();
}
}
- Затем у меня есть еще один класс с
TextField
:
class MyTextField extends StatelessWidget {
@override
Widget build(BuildContext context) {
return TextField(
//some decorations here
onChanged(value) {
Provider.of<AmountManager>(context).changeAmount(value);
},
);
}
}
- А в другом классе в главном приложении я называю
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);
},
См. Это для деталей.