Cop*_*oad 33
(在您的第一页中):使用此代码导航到第二页。
Navigator.pushNamed(context, '/page2').then((_) {
// This block runs when you have returned back to the 1st Page from 2nd.
setState(() {
// Call setState to refresh the page.
});
});
Run Code Online (Sandbox Code Playgroud)
(在您的第二页中):使用此代码返回到第一页。
Navigator.pop(context);
Run Code Online (Sandbox Code Playgroud)
azi*_*iza 13
当您导航回第一页时,您可以触发API调用,就像这个伪代码一样
class PageOne extends StatefulWidget {
@override
_PageOneState createState() => new _PageOneState();
}
class _PageOneState extends State<PageOne> {
_getRequests()async{
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new RaisedButton(onPressed: ()=>
Navigator.of(context).push(new MaterialPageRoute(builder: (_)=>new PageTwo()),)
.then((val)=>val?_getRequests():null),
),
));
}
}
class PageTwo extends StatelessWidget {
@override
Widget build(BuildContext context) {
//somewhere
Navigator.pop(context,true);
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果API经常更新,您可以使用流,新数据将在您的内部自动更新 ListView
例如,使用firebase,我们可以做到这一点
stream: FirebaseDatabase.instance.reference().child(
"profiles").onValue
Run Code Online (Sandbox Code Playgroud)
只要您在数据库中更改某些内容(例如,从编辑个人资料页面),它就会反映在您的个人资料页面上.在这种情况下,这是唯一可能的,因为我正在使用onValue它将继续监听任何更改并代表您进行更新.
Moh*_*our 11
当您从 nextScreen 导航回来时使用结果,如下所示:
Navigator.of(context).pop('result');
or if you are using Getx
Get.back(result: 'hello');
Run Code Online (Sandbox Code Playgroud)
并重新加载上一页使用此功能:
void _navigateAndRefresh(BuildContext context) async {
final result = await Get.to(()=>NextScreen());//or use default navigation
if(result != null){
model.getEMR(''); // call your own function here to refresh screen
}
}
Run Code Online (Sandbox Code Playgroud)
调用此函数而不是直接导航到 nextScreen
| 归档时间: |
|
| 查看次数: |
8215 次 |
| 最近记录: |