flutter - 如何在颤动中返回刷新的数据
问题描述
我正在尝试使用后退按钮或箭头按钮返回,但是,当我返回上一页时,数据不会刷新。
当我单击此代码中的按钮时,我将进入下一页(从 page1 到 page2)
Navigator.of(context).push(MaterialPageRoute(builder: (_) {
retturn Page2();
}));
并对 Page2() 进行了一些更改,这些更改将影响 Page1(),然后从应用程序栏上的箭头按钮或 android 中的后退按钮,如果我们按下其中任何一个来返回,我们有两个选项可以返回来自 page2() 的 Page1() 然后我想从 firebase 刷新数据
解决方案
您可以在下面复制粘贴运行完整代码
您可以使用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.'),
),
)
],
),
),
);
}
}
推荐阅读
- cmake - 在 Ubuntu 20.04 上构建 QtQuick 应用程序需要哪些开发包?
- react-native - 仅在异步函数中允许等待错误反应本机
- node.js - 使用 mocha 测试猫鼬异步钩子时遇到问题
- sql - 获取没有 ROWCOUNT 的查询结果集返回的行数
- oracle - 当我需要按名字和姓氏查询时,我应该如何在 Oracle 中索引 FULLNAME 字段?
- svg - 有没有办法让用户上传 SVG 文件,然后渲染 SVG 源?
- excel - VBA - 插入公式并转换为值
- laravel - Laravel 中间关系数据错误
- r - 使用 R 将“84+3”等字符转换为数值变量
- python - 检查匹配组是否存在而没有“尝试”?