flutter Getx 路由
本文最后更新于:2022年4月22日 上午
Getx 路由,免context
GetX 路由
前置条件
将 MaterialApp
修改为 GetMaterialApp
,然后传入 getPages
void main() {
runApp(
GetMaterialApp(
title: "Application",
initialRoute: AppPages.INITIAL,
getPages: AppPages.routes,
),
);
}
routes.dart
class AppPages {
AppPages._();
static const INITIAL = Routes.HOME;
static final routes = [
GetPage(
name: _Paths.HOME,
page: () => HomeView(),
binding: HomeBinding(),
),
];
}
路由跳转
功能和原生的类似,也可以通过 await
来等待跳转页面的返回结果
匿名路由跳转
Get.to(
() => Home()
transition: Transition.rightToLeft 从右向左
duration:
curve: 动画效果
arguments: 'xxx'
);
关闭当前页面并进入下一个页面(replace)
Get.offNamed("/NextScreen");
关闭所有页面并进入下一个页面
Get.offAllNamed("/NextScreen");
命名路由跳转
Get.toNamed('/home');
路由传参
url参数
Get.offAllNamed("/detail?id=1001&title=苹果");
页面 /controller 接收
print(Get.parameters['id']); // out: 1001
print(Get.parameters['title']); // out: 苹果
arguments 参数
Get.toNamed("/NextScreen", arguments: '苹果');
页面 /controller 接收
print(Get.arguments); // out: 苹果
返回上一页
返回传参
Get.back(result:'yyyy');
返回接受参数
Get.toNamed("/detail/1001?title=苹果").then((res){
print(res); // out: yyyy
});
动态路由
动态路由注册
getPages: [
GetPage(name: '/', page: () => MyHomePage()),
GetPage(name: '/detail/:id', page: () => DetailPage()),
],
动态路由跳转
Get.toNamed("/detail/1001?title=苹果");
动态路由接受参数
print(Get.parameters['id']); // out: 1001
print(Get.parameters['title']); // out: 苹果
中间件
全局中间件(全局导航守卫)
GetMaterialApp(
routingCallback: (routing) {
if(routing.current == '/second'){
openAds();
}
}
)
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议,转载请注明出处。