我的屏幕顺序是A->B->C->D
在B、C、D屏幕中有一个按钮,应该带你回到A屏幕,并保留它的状态(因此pushNamedAndRemoveUntil在这里不适用)
我想使用popUntil,下面是如何操作,基于文档:
Navigator.popUntil(context, ModalRoute.withName(ScreenName.mainScreen));
我遇到了一个错误:
Bad state: Future already completed这是我的主要内容:
void main() {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
final pages = {
ScreenName.mainScreen: (settings) => MaterialPageRoute(
builder: (context) => MainScreen(), settings: settings),
};
var configureApp = AppConfig(
appName: 'TaskerMate',
flavorName: FLAVOR_NAME.PROD,
child: AppModelProvider(
model: AppModel(),
child: MaterialApp(
theme: TMTheme().get(),
home: SplashScreen(),
onGenerateRoute: (settings) {
pages[settings.name](settings);
},
routes: {ScreenName.mainScreen: (context) => MainScreen()},
),
),
);
Logger.root.level = Level.ALL;
Logger.root.onRecord.listen((LogRecord rec) {
print('${rec.level.name}: ${rec.time}: ${rec.message}');
});
runApp(configureApp);
}
ScreenName.mainScreen -> 静态常数字符串 mainScreen = '/main';