1.跳转
在原生中咱们一般运用的是push进行跳转的,这儿是没有界说途径直接经过上下文进行跳转
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => DiscoverChildPage(
title: widget.title,
)));
咱们运用Get.to进行跳转
Get.to( DiscoverChildPage(
title: widget.title,
)),
当咱们界说途径则直接经过Get.toNamed
Get.toNamed("/discover/child");
或许咱们之前界说的AppRoutes并运用GetX 界说了路由则直接
Get.toNamed(AppRoutes.discoverDetail);
2. 回来
在原生中咱们一般运用的是pop进行回来的
Navigator.pop(context)
运用Getx的话
Get.back()
3. 铲除
咱们有些时分会用到一些铲除的作用,比方说咱们初次注册的时分,流程完成后就应该铲除该页面
铲除上一个页面
class ChartChildPage extends StatelessWidget {
const ChartChildPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('子页面'),),
body: IconButton(
icon:const Icon(Icons.close),
onPressed: ()=> Get.offNamed(AppRoutes.network)
),
);
}
}
或许直接经过页面
Get.off(const ChatListPage())
铲除所有途径
onPressed: ()=> Get.offAll(const ScaffoldPage())
也可经过途径
onPressed: ()=> Get.offAllNamed(AppRoutes.network)
Get.offAll这儿会铲除之前的途径并回来咱们括号中的页面并进行初始化,而Get.off则仅仅相当于回来咱们想要的页面,其中的页面便是相当于咱们想要的途径,这样咱们就能够回来指定页面了,比方可返还当前页面的上上个页面
4. 传值
在页面之间传值与回来值的接收都是开发中必要的功用,比较属性传值,经过Getx传值更加便利。
传值
咱们在页面跳转的的时分增加
Future<T?>? toNamed<T>(
String page, {
dynamic arguments,
int? id,
bool preventDuplicates = true,
Map<String, String>? parameters,
})
咱们一般界说的是arguments,由于是dynamic因此能够动态的界说类型
Get.toNamed(AppRoutes.webview,arguments: '我是一个标题');
而parameters则一般是一个 Map<String, String>类型
Get.toNamed(AppRoutes.loadImage,arguments: items[index],parameters: {'title':'跳转网页','desc': "跳转网页",},
取值
这儿咱们arguments传的是什么便是取的是什么
String? title = Get.arguments['title'];
获取parameters
final parameters = Get.parameters;
String? title1 = parameters['title'];
5. 回来值
一般咱们能够在Get.back增加result
void back<T>({
T? result,
bool closeOverlays = false,
bool canPop = true,
int? id,
})
这儿咱们result为咱们回传的参赛,closeOverlays则是否封闭当前的弹出框
Get.back(result: {'result':'success'});
承受
var data = await Get.to(const ChartChildPage());
print(data);
打印结果
flutter: {result: success}
6. 拼接参数
咱们有的时分会途径拼接或许运用url拼接参数
static void goWeb(String url, String title) {
Get.toNamed(
"/web?url=${Uri.encodeComponent(url)}&title=${Uri.encodeComponent(title)}");
}
这样咱们经过参数传递进入web页
XRouter.goWeb(url, title);
在WebViewPage获取
String? url = Get.parameters['url'];
String? title = Get.parameters['title'];
7.小结
能够发现经过Getx进行页面的跳转以及回来,或许指定相应页面回来都是比较便利的,同时传参也是多种形式,回来的时分也能够携带参数以及状况从而处理咱们页面,刷新状况等。