get的官方文档上介绍说,它具有更快和更实际的路由管理,至于性能上是不是如他所说我暂时没做比较,本文从初始化的路由逻辑和部分其他跳转逻辑的代码上来看一下和Flutter原生跳转有何不同,确切地说是做了何种封装。Flutter原生初始路由获取 在Flutter原生中,初始化路由主要通过在MaterialApp中指定的initialRoute和routes属性...
在使用GetX时,我们首先在main.dart文件中使用GetMaterialApp,并在getPages参数中注册应用程序中的所有页面···: voidmain(){runApp(GetMaterialApp(initialRoute:'/home',getPages:[GetPage(name:'/home',page:()=>HomeScreen()),GetPage(name:'/details',page:()=>DetailsScreen()),],));} 1. 2. 3....
管理多个页面时有两个核心概念和类:Route和Navigator。 一个route是一个屏幕或页面的抽象,Navigator是管理route的Widget。Navigator可以通过route入栈和出栈来实现页面之间的跳转。 1. 导航跳转及返回(带传值) 基础跳转及返回 // 跳转Navigator.push(context,MaterialPageRoute(builder:(context){returnconstDetailScreen(...
当被调用路由的页面被搜索时,这个函数将被调用。它将RouteSettings作为重定向的结果。或者给它null,就没有重定向了。 RouteSettings redirect(Stringroute) {finalauthService = Get.find<AuthService>();returnauthService.authed.value ?null: RouteSettings(name:'/login') } ...
final routes={'/':(context)=>Tabs(),'/search':(context,{arguments})=>SeachPage(arguments:arguments),"/from":(context)=>FromPage(),};//固定写法varonGenerateRoute=(RouteSettings settings){// 统一处理final String name=settings.name;final Function pageContentBuilder=routes[name];if(pageContent...
Widgetbuild(BuildContext context){returnNavigator(key:navigatorKey,pages:[for(final urlin_stack)getPage(url)],onPopPage:(route,result){if(_stack.isNotEmpty){_stack.removeLast();notifyListeners();}returnroute.didPop(result);},);}PagegetPage(String url){returnMaterialPage(name:url,arguments:null...
GetPageRoute( page: () => page, opaque: opaque, transition: transition, fullscreenDialog: fullscreenDialog, parameter: arguments, ), ); } 在上面的代码中,我们可以看到 to 方法实际上是通过调用navigator.push方法来实现路由跳转的。而 navigator 属性是通过 GetX 框架提供的Get.key来获取的,它实际上就...
voidmain() {runApp(MyApp());}classMyAppextendsStatelessWidget{@overrideWidget build(BuildContext context) {returnGetMaterialApp(home: CounterGetPage(),);}} 各模块导包,均使用下面包即可 import'package:get/get.dart'; 插件 这个getx代码生成插件,我花了不少精力去完善,功能已经比较齐全了,希望对大家有...
publicvoidpushNativeRoute(String pageName, HashMap<String, String> arguments) { Intent intent =newIntent(FlutterBoost.instance.currentActivity, NativePageActivity.class); FlutterBoost.instance.currentActivity.startActivity(intent); } @Override publicvoidpushFlutterRoute(String pageName, HashMap<String, St...
key("ShellRoute"),// << workaroundname:state.name??state.path, arguments:<String,String>{...state.pathParameters, ...state.uri.queryParameters}, restorationId:state.pageKey.value,// ???child:Scaffold( ... ), ); }, ... )