• 【Flutter】Flutter学习-GetX 导航操作


    1.跳转

    在原生中咱们一般运用的是push进行跳转的,这儿是没有界说途径直接经过上下文进行跳转

    Navigator.of(context).push(MaterialPageRoute(
        builder: (BuildContext context) => DiscoverChildPage(
              title: widget.title,
            )));
    
    • 1
    • 2
    • 3
    • 4

    咱们运用Get.to进行跳转

     Get.to( DiscoverChildPage(
              title: widget.title,
            )),
    
    • 1
    • 2
    • 3

    当咱们界说途径则直接经过Get.toNamed

    Get.toNamed("/discover/child");
    
    • 1

    或许咱们之前界说的AppRoutes并运用GetX 界说了路由则直接

    Get.toNamed(AppRoutes.discoverDetail);
    
    • 1

    2. 回来

    在原生中咱们一般运用的是pop进行回来的

    Navigator.pop(context)
    
    • 1

    运用Getx的话

    Get.back()
    
    • 1

    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)
          ),
        );
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    或许直接经过页面

    Get.off(const ChatListPage())
    
    
    • 1
    • 2

    铲除所有途径

    onPressed: ()=> Get.offAll(const ScaffoldPage())
    
    • 1

    也可经过途径

    onPressed: ()=> Get.offAllNamed(AppRoutes.network)
    
    • 1

    Get.offAll这儿会铲除之前的途径并回来咱们括号中的页面并进行初始化,而Get.off则仅仅相当于回来咱们想要的页面,其中的页面便是相当于咱们想要的途径,这样咱们就能够回来指定页面了,比方可返还当前页面的上上个页面

    4. 传值

    在页面之间传值与回来值的接收都是开发中必要的功用,比较属性传值,经过Getx传值更加便利。

    传值
    咱们在页面跳转的的时分增加

    Future? toNamed(
      String page, {
      dynamic arguments,
      int? id,
      bool preventDuplicates = true,
      Map? parameters,
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    咱们一般界说的是arguments,由于是dynamic因此能够动态的界说类型

    Get.toNamed(AppRoutes.webview,arguments: '我是一个标题');
    
    • 1

    而parameters则一般是一个 Map类型

    Get.toNamed(AppRoutes.loadImage,arguments: items[index],parameters: {'title':'跳转网页','desc': "跳转网页",},
    
    • 1

    取值
    这儿咱们arguments传的是什么便是取的是什么

    String? title = Get.arguments['title'];
    
    • 1

    获取parameters

    final parameters = Get.parameters;
    String? title1 = parameters['title'];
    
    • 1
    • 2

    5. 回来值

    一般咱们能够在Get.back增加result

    void back({
      T? result,
      bool closeOverlays = false,
      bool canPop = true,
      int? id,
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这儿咱们result为咱们回传的参赛,closeOverlays则是否封闭当前的弹出框

    Get.back(result: {'result':'success'});
    
    • 1

    承受

    var data = await Get.to(const ChartChildPage());
    print(data);
    
    • 1
    • 2

    打印结果

    flutter: {result: success}
    
    • 1

    6. 拼接参数

    咱们有的时分会途径拼接或许运用url拼接参数

    static void goWeb(String url, String title) {
      Get.toNamed(
          "/web?url=${Uri.encodeComponent(url)}&title=${Uri.encodeComponent(title)}");
    }
    
    • 1
    • 2
    • 3
    • 4

    这样咱们经过参数传递进入web页

    XRouter.goWeb(url, title);
    
    • 1

    在WebViewPage获取

    String? url = Get.parameters['url'];
    String? title = Get.parameters['title'];
    
    • 1
    • 2

    7.小结

    能够发现经过Getx进行页面的跳转以及回来,或许指定相应页面回来都是比较便利的,同时传参也是多种形式,回来的时分也能够携带参数以及状况从而处理咱们页面,刷新状况等。

  • 相关阅读:
    深度学习(PyTorch)——多分类问题(Softmax Classifier)
    CSAPP Bomb Lab
    大数据项目之电商数仓、日志采集Flume测试、日志采集Flume启停脚本
    Redis与分布式-哨兵模式
    c# WPF 应用程序在屏幕上居中显示
    机器学习KNN最邻近分类算法
    request和response——请求响应对象
    TSINGSEE智能分析网关简介及说明
    分割学习(loss and Evaluation)
    百果园再冲刺港交所上市:扩张靠加盟和放贷,余惠勇夫妇为实控人
  • 原文地址:https://blog.csdn.net/tianzhilan0/article/details/136307459