未调用ChangeNotifier类中的函数

时间:2020-03-11 12:35:53

标签: flutter provider state-management flutter-change-notifier

我有一个Flutter App,其中提供者为州经理。 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 个答案:

答案 0 :(得分:3)

listen: false中使用Provider.of()时需要onChanged

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

有关详细信息,请参见this