首页 > 解决方案 > Flutter 导航抽屉和有状态小部件的“删除”状态

问题描述

我有一个带有几个有状态和无状态小部件的小型颤振应用程序。我的抽屉小部件如下所示:

class AppDrawer extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: ListView(
        padding: EdgeInsets.zero,
        children: <Widget>[
          _createDrawerHeader(),
          ListTile(
            title: Text('Scenario'),
            onTap: () {
              Navigator.pop(context);
              Navigator.pushReplacementNamed(context, Routes.scenario);
            },
          ),
...

这适用于我的小部件之间的切换。我现在有一个简单的计数器小部件,它在其状态中存储一个计数器变量。

class Counter extends StatefulWidget {
  static const String routeName = '/Counter';

  int _counter = 0;
  @override
  _CounterState createState() => new _CounterState();
}

class _CounterState extends State<Counter> {
  void _increment() {
    setState(() {
      widget._counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Row(
        children: <Widget>[
          new RaisedButton(
            onPressed: _increment,
            child: new Text('Increment'),
          ),
          new Text('Count: ${widget._counter}'),
        ],
      ),
      drawer: AppDrawer(),
    );
  }
}

如果我用抽屉在这个和我的其他小部件之间切换并返回到计数器小部件,则计数器始终为 0。看起来状态每次都被初始化。我是使用颤振的初学者,我想我可以在这种状态下保存一个变量。我想我错了。由于我的搜索没有得到一些有用的结果,也许你可以告诉我如何解决这个问题,或者只是提供一些信息链接。谢谢你的帮助 :)

标签: flutter

解决方案


我建议学习某种状态管理实践。您最终将需要学习这一点,因为这是必不可少的步骤。尝试使用简单易用的提供程序。


推荐阅读