我有一个具有多个页面的应用程序,根据用户选择,某些页面会被跳过。
例如,我有以下页面 details.dart
contact.dart
address.dart
code.dart
summary.dart
我想从以上任何页面转到另一页。但是,我想先检查一下它们是否在堆栈中,然后弹出。否则,将该页面推入堆栈
如何在Flutter中做到这一点
答案 0 :(得分:0)
我认为您可能要使用Navigator.of(context).pushNamedAndRemoveUntil
或Navigator.popUntil
。
它们非常相似,但是就像名称建议pushNamedAndRemoveUntil
在谓词匹配时推送一条新路由,而popUntil
重用树中的现有Route / Widget。
您可以在这个精彩的Medium post上详细了解它们,并详细解释所有选项。
答案 1 :(得分:0)
您可以在home之后使用materialApp内部的路线
return MaterialApp(
home:... ,
routes:{
"/routeName" : (context) => PageRoute()
}
,然后从任何页面调用路由名称 例如:“联系人”页面中的应用程序需要移至PageRoute
//Contact Page
...
onTap:(){
Navigator.pushReplacementName(context,'/routeName');
}
答案 2 :(得分:0)
只需使用多个Navigator.pop
答案 3 :(得分:0)
以下是如何在两条路线之间导航,使用以下步骤:
-创建两条路线。
-使用 Navigator.push()
导航到第二条路线。
-使用 Navigator.pop()
返回第一条路线。
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
title: 'Navigation Basics',
home: FirstRoute(),
));
}
class FirstRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('First Route'),
),
body: Center(
child: ElevatedButton(
child: Text('Open route'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondRoute()),
);
},
),
),
);
}
}
class SecondRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Second Route"),
),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.pop(context);
},
child: Text('Go back!'),
),
),
);
}
}