Flutter之保存状态
##保存状态:
在页面A进行界面操作后,跳转到其他界面B,再返回页面A时,页面A仍是离开前的状态
步骤
- 既然是保存状态,所以要使用 StatefulWidget
- 继承 State 的同时需要使用 with 引入状态函数 AutomaticKeepAliveClientMixin
- 定义状态值,重写状态函数 wantKeepAlive ,返回 true
- 编写状态改变函数
- 使用状态改变函数
例子
class AliveItem extends StatefulWidget {// ①使用StatefulWidget
@override
_AliveItemState createState() => _AliveItemState();
}
class _AliveItemState extends State<AliveItem> with AutomaticKeepAliveClientMixin {// ②引入状态函数
// ③定义状态值
int _counter = 0;
// ③重写状态函数
@override
bool get wantKeepAlive => true;
// ④编写状态改变函数
void _increaseCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: <Widget>[
Text("当前数值"),
Text(
"$_counter",
style: Theme.of(context).textTheme.display1,
),
],
mainAxisAlignment: MainAxisAlignment.center,
),
),
floatingActionButton: FloatingActionButton(
onPressed: (){
// ⑤使用状态改变函数
_increaseCounter();
},
tooltip: "+1",
child: Icon(Icons.add),
),
);
}
}
额外:
- with 只能引入结尾为Mixin的类,引入其它很容易报错