最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter?GetPageRoute實現(xiàn)嵌套導航學習

 更新時間:2022年08月11日 15:22:46   作者:潛水的魚兒  
這篇文章主要為大家介紹了Flutter?GetPageRoute實現(xiàn)嵌套導航的示例學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1. 嵌套導航-GetPageRoute

本文主要介紹在Getx下快速實現(xiàn)一個嵌套導航

嵌套導航顧名思義,我們導航頁面中嵌套一個獨立的路由,效果如下

點擊跳轉(zhuǎn)

代碼如下,也是比較簡單

return Scaffold(
  appBar: AppBar(title: const Text('嵌套導航'),),
  body: Navigator(
      key: Get.nestedKey(1), // create a key by index
      initialRoute: '/',
      onGenerateRoute: (settings) {
        if (settings.name == '/') {
          return GetPageRoute(
            page: () => Scaffold(
              appBar: AppBar(
                title: const Text("首頁"), backgroundColor: Colors.blue
              ),
              body: Center(
                child: ElevatedButton(
                  onPressed: () {
                    Get.toNamed('/second', id:1); // navigate by your nested route by index
                  },
                  child: const Text("跳轉(zhuǎn)下一頁"),
                ),
              ),
            ),
          );
        } else if (settings.name == '/second') {
          return GetPageRoute(
            page: () => Center(
              child: Scaffold(
                appBar: AppBar(
                  title: const Text("第二頁"),backgroundColor: Colors.blue
                ),
                body: const Center(
                    child:  Text("第二頁")
                ),
              ),
            ),
          );
        }
      }
  ),
);

通過Navigator這個widget把我們的路由放入新的導航中,通過onGenerateRoute來區(qū)分頁面的路由跳轉(zhuǎn),key使用的是Get.nestedKey(1)來區(qū)分具體頁面。GetPageRoute創(chuàng)建路由頁面

2. 自定義拓展

我們也可以添加占位圖,用于存放一些廣告頁

 Column(
  children: [
    Container(
      color: Colors.amberAccent,
      height: 100,
      child: const Center(child: Text('我是輪播圖')),
    ),
    Expanded(
      child: Navigator())]

這里使用Column進行包裹,Expanded撐開下部分。

3. 使用bottomNavigationBar

class NestedNavigatePage extends StatelessWidget {
  const NestedNavigatePage({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    final logic = Get.find<NestedNavigateLogic>();
    final state = Get.find<NestedNavigateLogic>().state;
    return Scaffold(
      appBar: AppBar(title: const Text('嵌套導航'),),
      body: Column(
        children: [
          Container(
            color: Colors.amberAccent,
            height: 100,
            child: const Center(child: Text('我是輪播圖')),
          ),
          Expanded(
            child: Navigator(
                key: Get.nestedKey(1), // create a key by index
                initialRoute: '/home',
                onGenerateRoute: logic.onGenerateRoute,
            ),
          ),
        ],
      ),
      bottomNavigationBar:Obx(() => BottomNavigationBar(
        items: const [
          BottomNavigationBarItem(icon: Icon(Icons.home),label: '首頁'),
          BottomNavigationBarItem(icon: Icon(Icons.list),label: '列表'),
          BottomNavigationBarItem(icon: Icon(Icons.people),label:'我的'),
        ],
        currentIndex: state.selectIndex.value,
        onTap: logic.selectTabBarIndex,
        selectedItemColor: Colors.red,
      )),
    );
  }
}
  • state 中定義數(shù)據(jù)
class NestedNavigateState {
 var selectIndex = 0.obs;
 List<String> pages = ['/home','/list','/mine'];
  NestedNavigateState() {
    ///Initialize variables
  }
}
  • logic 中實現(xiàn)邏輯
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'nested_navigate_state.dart';
class NestedNavigateLogic extends GetxController {
  final NestedNavigateState state = NestedNavigateState();
  selectTabBarIndex( int index){
    state.selectIndex.value = index;
    Get.toNamed(state.pages[index],id: 1);
  }
  Route? onGenerateRoute(RouteSettings settings) {
    return GetPageRoute(
      settings: settings,
      page: () => page(settings.name!),
      transition: Transition.leftToRightWithFade,
    );
  }
  Widget page(String title) {
   return Center(
        child: Scaffold(
            // appBar: AppBar(
            //     title:  Text(title), backgroundColor: Colors.blue
            // ),
            body: Center(
                child: Text(title)
            )
        ));
  }
}

點擊通過obx自動響應(yīng)

4.小結(jié)

我們通過GetPageRoute可以進行導航嵌套,方便我們實現(xiàn)一些特定需求。同時我們可以配合bottomNavigationBar實現(xiàn)tabbr效果。 創(chuàng)建平行導航堆??赡苁俏kU的。

理想的情況是不要使用NestedNavigators,或者盡量少用。如果你的項目需要它,請繼續(xù),但請記住,在內(nèi)存中保持多個導航堆棧可能不是一個好主意。

以上就是Flutter GetPageRoute實現(xiàn)嵌套導航學習的詳細內(nèi)容,更多關(guān)于Flutter GetPageRoute嵌套導航的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Objective-C的UIStackView常用屬性函數(shù)學習筆記

    Objective-C的UIStackView常用屬性函數(shù)學習筆記

    這篇文章主要為大家介紹了Objective-C的UIStackView常用屬性函數(shù)學習筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • iOS(閉包)block傳值詳解

    iOS(閉包)block傳值詳解

    這篇文章主要介紹了iOS(閉包)block傳值的相關(guān)知識以及代碼分享,對此有興趣的朋友可以學習下。
    2018-02-02
  • iOS實現(xiàn)動態(tài)自適應(yīng)標簽

    iOS實現(xiàn)動態(tài)自適應(yīng)標簽

    這篇文章主要為大家詳細介紹了iOS動態(tài)自適應(yīng)標簽的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Unity移動端的復制要這么寫示例代碼

    Unity移動端的復制要這么寫示例代碼

    這篇文章主要給大家介紹了關(guān)于Unity移動端的復制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-08-08
  • iOS 自定義返回按鈕保留系統(tǒng)滑動返回功能

    iOS 自定義返回按鈕保留系統(tǒng)滑動返回功能

    這篇文章主要介紹了iOS 自定義返回按鈕,保留系統(tǒng)滑動返回功能,實現(xiàn)方法非常簡單,具有參考借鑒價值,需要的朋友參考下吧
    2017-01-01
  • searchDisplayController 引起的數(shù)組越界處理辦法

    searchDisplayController 引起的數(shù)組越界處理辦法

    這篇文章主要介紹了searchDisplayController 引起的數(shù)組越界處理辦法,需要的朋友可以參考下
    2015-07-07
  • iOS 加載Bundle文件的實例代碼

    iOS 加載Bundle文件的實例代碼

    這篇文章主要介紹了iOS 加載Bundle文件的實例代碼,代碼簡單易懂,非常不錯,需要的朋友參考下
    2016-12-12
  • IOS中的target action控件的實現(xiàn)

    IOS中的target action控件的實現(xiàn)

    這篇文章主要介紹了IOS中的target action控件的實現(xiàn)的相關(guān)資料,這里提供實現(xiàn)target action的簡單實例幫助大家學習理解該如何實現(xiàn),需要的朋友可以參考下
    2017-08-08
  • 快速解決iOS10不能跳轉(zhuǎn)系統(tǒng)WiFi列表的問題

    快速解決iOS10不能跳轉(zhuǎn)系統(tǒng)WiFi列表的問題

    下面小編就為大家?guī)硪黄焖俳鉀QiOS10不能跳轉(zhuǎn)系統(tǒng)WiFi列表的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • iOS中字符串換行的實現(xiàn)方法

    iOS中字符串換行的實現(xiàn)方法

    大家應(yīng)該都有所體會,單行字符數(shù)過多會影響美觀,所以下面這篇文章主要給大家介紹了關(guān)于iOS中字符串換行的實現(xiàn)方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2018-07-07

最新評論

洞口县| 万宁市| 黔西县| 河源市| 鱼台县| 公主岭市| 鹿泉市| 天峻县| 曲沃县| 边坝县| 凌海市| 绥宁县| 赤水市| 墨竹工卡县| 湘潭市| 泾阳县| 科尔| 澳门| 三明市| 石柱| 延吉市| 阿坝县| 格尔木市| 东光县| 桦甸市| 巴林右旗| 什邡市| 德钦县| 沁水县| 浮山县| 马边| 遂宁市| 慈利县| 凤台县| 吉安市| 罗源县| 蚌埠市| 平乡县| 循化| 视频| 且末县|