0

我有一个以 Provider 作为状态管理器的 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

你觉得我哪里不对?

先感谢您,

4

1 回答 1

4

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

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

有关详细信息,请参阅

于 2020-03-11T14:02:07.483 回答