Flutter 法法注解路由 2.0

2.0的诞生

去年推出法法注解路由以后 经(pian)过(lai)几个工具人维护,版本已经来到2.0,功能比较齐全稳定。git

没有使用或者了解过法法注解路由,请看以前的文章Flutter 法法路由注解,下面讲的是2.0的加强功能。github

命令简化

做为一个工具,命令太长,一直是你们吐槽的问题之一,从全称ff_annotation_route 改为了 ff_route。改动很简单,将下图代码改成 ff_route便可。markdown

全新的帮助命令

ff_route -h或者 ff_route --help查看所有命令模块化

支持Flutter_Boost

不少人问过,法法路由支持Flutter_Boost吗,个人答案是确定。demo传送门工具

初始化一共有2个地方:post

  • 从原生跳转Flutter的地方

使用FlutterBoost.singleton.open打开Flutter页面将触发下面代码。 原生跳转flutter动画只能原生决定。动画

///native=>flutter
    FlutterBoost.singleton.registerDefaultPageBuilder(
        (String pageName, Map params, String uniqueId) {
      final routeResult = getRouteResult(
        name: pageName,
        arguments: params?.map(
            (key, value) => MapEntry<String, dynamic>(key.toString(), value)),
      );
      return routeResult.widget ?? NoRouteWiget();
    });
复制代码
  • Flutter跳转Flutter的地方

使用Navigator.of(context).pushNamed打开Flutter页面将触发下面代码, 动画为PageRoute决定ui

///flutter=>flutter
      onGenerateRoute: (settings) => onGenerateRouteHelper(
        settings,
        notFoundFallback: NoRouteWiget(),
      ),
复制代码
  • 随带讲一下Flutter_Boost在Flutter这边的实现。

1.利用builder回调重写MaterialApp中默认的Navigatorspa

return MaterialApp(
      title: 'Flutter Boost example',
      builder: FlutterBoost.init(postPush: _onRoutePushed),
复制代码

2.每当使用FlutterBoost.singleton.open从原生跳转flutter的时候,将在flutter端利用Overlay插入一个新的Navigator设计

3.Navigator.of(context).pushNamed将在顶层Navigator中跳转

保存命令

工具就是了方便,就算是有帮助命令,每次生成的时候看一下也是很麻烦,并且项目的命令应该是不变的。因而提供了一个新的命令-s或者--save

只须要咱们在第一次执行命令的时候带上-s或者--save,命令将会保存到本地。

下一次咱们只须要执行ff_route便可。

支持扫描git

原本设计为只扫描本地引用的目录,后来有用户提到作模块化,会以git方法引用一些私有git库。

执行-g, --git package1,package2,后面跟的是你git库的名字,好比

extended_image的demo中引用了flutter_candies_demo_library

那么咱们在使用的时候只须要加上--git flutter_candies_demo_library 便可。

支持对package的扫描

上面说了可能以git方式引用私有git库,这种状况下,私有的git package就须要单独进行执行命令,生产对应法法路由的文件。

好比flutter_candies_demo_library做为糖果demo的基础库,以git方式引用,其中PicSwiper做为一个全屏查看图片的页面被各个demo使用。

执行命令ff_route --package

对高低版本Flutter SDK的适配

命令 描述
-na, --no-arguments FFRouteSettings 将没有arguments这个参数,这个是主要是为了适配Flutter低版本
--no-is-initial-route FFRouteSettings 将没有isInitialRoute这个参数,这个是主要是为了适配Flutter高版本

结语

期待更多的工具人的加入,互为工具,永不寂寞。

最后放上 ff_annotation_route,欢迎加入Flutter Candies,一块儿生产可爱的Flutter 小糖果(QQ群:181398081)

最最后放上Flutter Candies全家桶,真香。

相关文章
相关标签/搜索