我正在尝试使用后退按钮或箭头中的箭头快速返回,但是当我返回上一页时,数据不会刷新。
当我单击此代码中的按钮时,我将转到下一页(从第1页到第2页)
Navigator.of(context).push(MaterialPageRoute(builder: (_) {
retturn Page2();
}));
并在Page2()上进行了一些更改,这些更改将影响Page1(),然后从应用栏上的箭头按钮或android中的后退按钮,我们有两个选项可以返回,如果我们按以下任意一项来返回从page2()转到Page1(),然后我要从Firebase刷新数据
答案 0 :(得分:1)
您可以在下面复制粘贴运行完整代码
您可以使用await Navigator.push
,然后致电setState
Navigator.pop
也可以将数据传回
代码段
result = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => SelectionScreen()),
);
setState(() {});
...
Navigator.pop(context, 'Yep!');
工作演示
完整代码
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
title: 'Returning Data',
home: HomeScreen(),
));
}
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String result = "wait Navigator.pop";
_navigateAndDisplaySelection(BuildContext context) async {
result = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => SelectionScreen()),
);
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Returning Data Demo'),
),
body: Center(
child: Column(
children: [
Text(result),
RaisedButton(
onPressed: () {
_navigateAndDisplaySelection(context);
},
child: Text('Pick an option, any option!'),
)
],
),
),
);
}
}
class SelectionScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Pick an option'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: RaisedButton(
onPressed: () {
// Close the screen and return "Yep!" as the result.
Navigator.pop(context, 'Yep!');
},
child: Text('Yep!'),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: RaisedButton(
onPressed: () {
// Close the screen and return "Nope!" as the result.
Navigator.pop(context, 'Nope.');
},
child: Text('Nope.'),
),
)
],
),
),
);
}
}