flutter - 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。看起来状态每次都被初始化。我是使用颤振的初学者,我想我可以在这种状态下保存一个变量。我想我错了。由于我的搜索没有得到一些有用的结果,也许你可以告诉我如何解决这个问题,或者只是提供一些信息链接。谢谢你的帮助 :)
解决方案
我建议学习某种状态管理实践。您最终将需要学习这一点,因为这是必不可少的步骤。尝试使用简单易用的提供程序。
推荐阅读
- c# - C# 中的相等性检查和向下转换代码异味
- ios - 基于自定义对象属性过滤对象时出现“无效的属性名称”错误
- c - 以下 gcc 编译错误可能意味着什么,为什么它有一部分看起来编码已损坏?
- javascript - Javascript:为什么我的全局变量没有更新?
- javascript - JavaScript - 如何使 ES6 导入在浏览器中工作?
- javascript - 使用 x-range 和多个堆栈的 highcharts 时间线图
- matlab - 在 Matlab 的 conv() 函数中使用“有效”进行卷积
- python - 抓取 Google 目的地
- knime - 如何替换 KNIME 中的列中的值?
- autodesk-forge - 无法在 getHubs 呼叫中检索我的 A360 HUB