我有一个场景,我需要从屏幕 A 导航到屏幕 B,然后到屏幕 C,最后从屏幕 C 直接返回屏幕 A,同时刷新屏幕 A 的内容。如何直接从屏幕 C 导航到屏幕 A导航时刷新屏幕 A 的内容时屏幕 A 吗?任何帮助或指导将不胜感激。谢谢!
更简单的解决方法是使用await 等待导航器返回该页面。我为你创建了一个小演示
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: ScreenA(),
);
}
}
class ScreenA extends StatelessWidget {
const ScreenA({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: InkWell(
onTap: () async {
await Navigator.push(
context, MaterialPageRoute(builder: (_) => ScreenB()));//await here
refreshPage();
},
child: SafeArea(
child: Center(child: Text("Goto ScreenB")),
),
),
);
}
void refreshPage() {
print("page Refreshed");
//write refresh code here
}
}
class ScreenB extends StatelessWidget {
const ScreenB({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: InkWell(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (_) => ScreenC()));
},
child: SafeArea(
child: Center(child: Text("Goto ScreenC")),
),
),
);
}
}
class ScreenC extends StatelessWidget {
const ScreenC({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: InkWell(
onTap: () {
Navigator.pop(context);
Navigator.pop(context);
},
child: SafeArea(
child: Center(child: Text("Goto ScreenA")),
),
),
);
}
}
这里当用户从 screenC 返回到 screenA 时,会触发 ScreenA 类中的刷新页面。