flutter如何实现页面跳转
在Flutter中如何实现页面跳转?有没有详细的代码示例?Navigator.push的具体用法是怎样的?不同页面之间如何传递参数?能否提供完整的跳转流程说明?
2 回复
Flutter中使用Navigator实现页面跳转。
- 跳转新页面:
Navigator.push(context, MaterialPageRoute(builder: (context) => NewPage())); - 返回上一页:
Navigator.pop(context); - 可传参和接收返回值。
更多关于flutter如何实现页面跳转的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,页面跳转主要通过Navigator实现。以下是常用的方法:
1. 基本跳转(MaterialApp/CupertinoApp)
// 跳转到新页面
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TargetPage()),
);
// 返回上一页
Navigator.pop(context);
2. 命名路由(推荐)
在MaterialApp中配置路由:
MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => HomePage(),
'/detail': (context) => DetailPage(),
'/profile': (context) => ProfilePage(),
},
);
使用命名路由跳转:
// 跳转
Navigator.pushNamed(context, '/detail');
// 带参数跳转
Navigator.pushNamed(
context,
'/detail',
arguments: {'id': 123, 'title': '示例'}
);
// 在目标页面获取参数
class DetailPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final args = ModalRoute.of(context)!.settings.arguments as Map;
return Scaffold(
appBar: AppBar(title: Text(args['title'])),
body: Text('ID: ${args['id']}'),
);
}
}
3. 替换当前页面
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => NewPage()),
);
// 命名路由版本
Navigator.pushReplacementNamed(context, '/newpage');
4. 清除所有页面并跳转
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (context) => MainPage()),
(route) => false,
);
// 命名路由版本
Navigator.pushNamedAndRemoveUntil(
context,
'/main',
(route) => false
);
5. 返回结果
// 跳转并等待结果
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => SelectionPage()),
);
// 返回时传递数据
Navigator.pop(context, '返回的数据');
注意事项
- 确保在BuildContext可用的地方使用Navigator
- 使用命名路由便于管理和维护
- 考虑使用路由管理包(如go_router)处理复杂导航
这些方法覆盖了大部分页面跳转需求,根据具体场景选择合适的方式。

