使用多个屏幕与提供商进行Flutter状态管理

时间:2019-10-30 12:46:50

标签: flutter dart provider

我的应用程序中有两个页面,Page_APage_B。我还有另外两个类,它们会在我的_votes中更新一个Privider Class变量(默认= 0),然后在Page_A中显示此变量,并且可以正常使用。

我正在尝试访问此变量(_votes),该变量现在已更新为在新页面23中显示为Page_B。但是,无论何时新页面被推送到屏幕,似乎变量都会重置为0而不是23。我该如何实现自己的目标。

1 个答案:

答案 0 :(得分:2)

让我们说这是您的提供程序类

class AppState with ChangeNotifier {
  int _votes = 0;

  getVotes() => _votes;

  setVotes(votes) {
    _votes = votes;
    notifyListeners();
 }}

//访问

appState = Provider.of<AppState>(context);

//获取当前值

appState.getVotes();

//设置值

v = 23;
appState.setVotes(v);

确保根类应如下所示:

void main() {
   runApp(new MyApp());}


 class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
       return ChangeNotifierProvider<AppState>(
         builder: (_) => AppState(),
         child: MaterialApp(
           home: HomePage(),
           debugShowCheckedModeBanner: false));
      }
   }