我有一个按钮,可将页面推送到用户填充一些数据的页面,然后他们可以退出该页面,但返回并对其进行编辑。
我提供了一个简化的示例,目的是能够在退出“计数页”后保持其计数,而不必将计数器保存在其他变量中。我想要一种保存小部件状态的通用方法。
所以换句话说,我不希望废弃状态,我想保存它,所以当我导航回该页面时,就像从未弹出它一样。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Save State',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
child: Text("Go to counter page"),
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => CounterPage()));
},
),
),
);
}
}
class CounterPage extends StatefulWidget {
@override
_CounterPageState createState() => _CounterPageState();
}
class _CounterPageState extends State<CounterPage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
RaisedButton(
child: Text("Go back"),
onPressed: () {
Navigator.pop(context);
},
)
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
答案 0 :(得分:1)
您应该阅读有关State Management的更多信息,这里有很多选择,您应该选择自己喜欢的东西。
如果您只想通过一种简单的方法来获取“页面”的结果,只需从Navigator.pop
返回计数器值即可。