我有一个Flutter App,其中提供者为州经理。 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
的初始值。
您认为我错了什么?
先谢谢您
答案 0 :(得分:3)
在listen: false
中使用Provider.of()
时需要onChanged
。
onChanged: (value) {
Provider.of<AmountManager>(context, listen: false).changeAmount(value);
},
有关详细信息,请参见this。