Flutter 法法註解路由 2.0

法的空間發表於2020-04-06

2.0的誕生

去年推出法法註解路由之後 經(pian)過(lai)幾個工具人維護,版本已經來到2.0,功能比較齊全穩定。

Flutter 法法註解路由 2.0

沒有使用或者瞭解過法法註解路由,請看之前的文章Flutter 法法路由註解,下面講的是2.0的增強功能。

命令簡化

作為一個工具,命令太長,一直是大家吐槽的問題之一,從全稱ff_annotation_route 改成了 ff_route。改動很簡單,將下圖程式碼改為 ff_route即可。

Flutter 法法註解路由 2.0

全新的幫助命令

ff_route -h或者 ff_route --help檢視全部命令

Flutter 法法註解路由 2.0

支援Flutter_Boost

很多人問過,法法路由支援Flutter_Boost嗎,我的答案是肯定。demo傳送門

初始化一共有2個地方:

  • 從原生跳轉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決定

      ///flutter=>flutter
      onGenerateRoute: (settings) => onGenerateRouteHelper(
        settings,
        notFoundFallback: NoRouteWiget(),
      ),
複製程式碼
  • 隨帶講一下Flutter_Boost在Flutter這邊的實現。

1.利用builder回撥重寫MaterialApp中預設的Navigator

    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,命令將會儲存到本地。

Flutter 法法註解路由 2.0

Flutter 法法註解路由 2.0

下一次我們只需要執行ff_route即可。

Flutter 法法註解路由 2.0

支援掃描git

本來設計為只掃描本地引用的目錄,後來有使用者提到做模組化,會以git方法引用一些私有git庫。

執行-g, --git package1,package2,後面跟的是你git庫的名字,比如

extended_image的demo中引用了flutter_candies_demo_library

Flutter 法法註解路由 2.0

那麼我們在使用的時候只需要加上--git flutter_candies_demo_library 即可。

支援對package的掃描

上面說了可能以git方式引用私有git庫,這種情況下,私有的git package就需要單獨進行執行命令,生產對應法法路由的檔案。

比如flutter_candies_demo_library作為糖果demo的基礎庫,以git方式引用,其中PicSwiper作為一個全屏檢視圖片的頁面被各個demo使用。

執行命令ff_route --package

Flutter 法法註解路由 2.0

對高低版本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全家桶,真香。

Flutter 法法註解路由 2.0

相關文章