Native(iOS) 跳轉(zhuǎn)指定(任意)Flutter界面,且作為根視圖

有些文章吧,總是這個(gè)架構(gòu)那個(gè)堆這個(gè)棧的,然后一堆不認(rèn)識(shí)的英文縮寫,說人話Please,拿起鍵盤就是干

標(biāo)題通俗來說,就是原生與flutter 來回跳轉(zhuǎn)的處理,想怎么跳就怎么跳

    1. 以iOS為例子,Native -> Flutter 肯定是 push 一個(gè)Flutter的controller, 那Android就是一個(gè)Activity嘍
    1. 如果Flutter -> Flutter 就是還是在Flutter 的Controller 里, Native 的 導(dǎo)航棧不變, 解釋成人話就是, navigation.viewControllers 的數(shù)量不變,頂部還是 FlutterViewController
    1. 如果Flutter -> iOS 這種情況,那就跟我們正常push 一個(gè)controller 一樣嘍, 棧數(shù)量 +1.

以上呢,基本就是處理Native 跟 Flutter 來回跳轉(zhuǎn)的思路

知識(shí)點(diǎn)

    1. 我之前一直糾結(jié)這個(gè)Flutter 首頁的問題 ('/'),就是這個(gè)路由,不設(shè)置怎么初始化?
      因?yàn)槲以?iOS 端設(shè)置了 initialRoute, 但是這個(gè)卻不是跟視圖,還能返回 ,我是真不知道!在initialRoute 跟 home 之間瞎操作了很多都沒有用 ps : 以上全廢話
  • (1) 只設(shè)置initialRoute的話,路由一定要有’/’,’/‘為首頁
  • (2)initialRoute和home同時(shí)有的時(shí)候,使用initialRoute,路由里面可以沒有’/’,返回最后返回到home,home是首頁,
  • (3)只有home時(shí),路由可以沒’/’,有不起作用。
  • (4)home,initialRoute都沒有,在路由onGenerateRoute中找’/’,
  • (5)initialRoute、home、路由的’/'都沒有時(shí),error。

重點(diǎn)??! 在FlutterApp 中 我們只設(shè)置 home ,然后用路由來跳轉(zhuǎn)

Start 開始我們的重點(diǎn)吧,說了一堆開始操作了

(一)auto_route 路由的 集成和怎么用

pubspec.yaml中添加 包括dev

dependencies:
  flutter:
    sdk: flutter
  auto_route: ^0.3.1

dev_dependencies:
  flutter_test:
    sdk: flutter
  auto_route_generator:
  build_runner:
控制臺(tái):packages get
  • 新建一個(gè) MyRouter.dart 千萬不要加 @initial 因?yàn)槲覀儾恍枰?/'的路由
@CupertinoAutoRouter()
class $MyRouter {
  //@initial
  HomePage homePage;
  MinePage minePage;
  CategoryPage categoryPage;
}
控制臺(tái):flutter packages pub run build_runner build

build完之后就會(huì)生成一個(gè)MyRouter.gr.dart 這個(gè)時(shí)候我們的MyRouter類才有的

  • 去你的App 下面注冊路由
class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  static MyNavigatorObserver navigatorObservers = MyNavigatorObserver();
  @override
  Widget build(BuildContext context) {
    return CupertinoApp(
      title: 'Home',
      theme: CupertinoThemeData(
        primaryColor: Colors.grey
      ),
      navigatorObservers: [navigatorObservers],
      onGenerateRoute: MyRouter.onGenerateRoute,
      navigatorKey: MyRouter.navigator.key,
      initialRoute: MyRouter.homePage,
    );
  }
  • auto_route 使用
//跳轉(zhuǎn)頁面
//如果你頁面有初始化參數(shù)(就是要接收的字段 ),MinePageArguments 就會(huì)生成這個(gè)類 當(dāng)參數(shù)穿過去
MyRouter.navigator.pushNamed(MyRouter.minePage, arguments: MinePageArguments(name:"who")).then((value) {
                print(value);
              });
//退出頁面
MyRouter.navigator.pop({"backContent":"123"});

其他的方法自己查去

------------------------------------------- 睡覺 ----------------------------------------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容