有些文章吧,總是這個架構(gòu)那個堆這個棧的,然后一堆不認(rèn)識的英文縮寫,說人話Please,拿起鍵盤就是干
標(biāo)題通俗來說,就是原生與flutter 來回跳轉(zhuǎn)的處理,想怎么跳就怎么跳
- 以iOS為例子,Native -> Flutter 肯定是 push 一個Flutter的controller, 那Android就是一個Activity嘍
- 如果Flutter -> Flutter 就是還是在Flutter 的Controller 里, Native 的 導(dǎo)航棧不變, 解釋成人話就是, navigation.viewControllers 的數(shù)量不變,頂部還是 FlutterViewController
- 如果Flutter -> iOS 這種情況,那就跟我們正常push 一個controller 一樣嘍, 棧數(shù)量 +1.
以上呢,基本就是處理Native 跟 Flutter 來回跳轉(zhuǎn)的思路
知識點(diǎn)
- 我之前一直糾結(jié)這個Flutter 首頁的問題 ('/'),就是這個路由,不設(shè)置怎么初始化?
因?yàn)槲以?iOS 端設(shè)置了 initialRoute, 但是這個卻不是跟視圖,還能返回 ,我是真不知道鸳址!在initialRoute 跟 home 之間瞎操作了很多都沒有用 ps : 以上全廢話
- 我之前一直糾結(jié)這個Flutter 首頁的問題 ('/'),就是這個路由,不設(shè)置怎么初始化?
- (1) 只設(shè)置initialRoute的話,路由一定要有’/’泉懦,’/‘為首頁
- (2)initialRoute和home同時有的時候稿黍,使用initialRoute,路由里面可以沒有’/’崩哩,返回最后返回到home巡球,home是首頁,
- (3)只有home時琢锋,路由可以沒’/’辕漂,有不起作用呢灶。
- (4)home吴超,initialRoute都沒有,在路由onGenerateRoute中找’/’鸯乃,
- (5)initialRoute鲸阻、home跋涣、路由的’/'都沒有時,error鸟悴。
重點(diǎn)3氯琛! 在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:
控制臺:packages get
- 新建一個 MyRouter.dart 千萬不要加 @initial 因?yàn)槲覀儾恍枰?/'的路由
@CupertinoAutoRouter()
class $MyRouter {
//@initial
HomePage homePage;
MinePage minePage;
CategoryPage categoryPage;
}
控制臺:flutter packages pub run build_runner build
build完之后就會生成一個MyRouter.gr.dart 這個時候我們的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 就會生成這個類 當(dāng)參數(shù)穿過去
MyRouter.navigator.pushNamed(MyRouter.minePage, arguments: MinePageArguments(name:"who")).then((value) {
print(value);
});
//退出頁面
MyRouter.navigator.pop({"backContent":"123"});
其他的方法自己查去
------------------------------------------- 睡覺 ----------------------------------------