【Flutter 專題】48 圖解 Android 原生集成 Flutter Module

      網友投稿 1047 2025-03-31

      小菜接觸了 flutter 一段時間,但與原生交互方面還未曾接觸,今天根據 官方文檔 學習一下 Android 原生如何集成最基本的 flutter Module;


      【Flutter 專題】48 圖解 Android 原生集成 Flutter Module

      集成方式

      小菜為了測試方便,新建一個 Android Project,本地路徑為 …/ACE_Android/ACE_Demo01;

      小菜首先采用如下命令行新建一個 Flutter Module,此時本地路徑為 …/ACE_Android 與 ACE_Demo01 同級;

      flutter create -t module my_flutter

      小菜也用 AndroidStudio 嘗試,同樣簡單便利;File -> New -> New Flutter Project -> Flutter Module;

      在 setting.gradle 中加入 Flutter 的引入;

      include ':app' //加入下面配置 setBinding(new Binding([gradle: this])) evaluate(new File( settingsDir.parentFile, 'my_flutter/.android/include_flutter.groovy' ))

      在 app/build.project 中添加 Flutter 依賴;

      implementation project(':flutter')

      可采用 Flie -> Sync Project with Grdle Files 時,可通過 Import Flutter Module 方式引入;此時若報 The Gradle files could not be updated automatically 則需要手動 3.1 操作;

      Android 引用 Flutter 通常是兩種,一種是新建一個 View 用來展示 Flutter 頁面,另一種是 Fragment;其本質還是將 Flutter View 作為 Android View 的子 View 展示;

      小菜新建一個無標題欄的 FlutterActivity 和一個 FlutterFragment,在 MainActivity 添加一個按鈕跳轉到 FlutterActivity 展示 FlutterFragment;

      public class FlutterActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_flutter); getSupportFragmentManager().beginTransaction() .replace(R.id.container, new FlutterFragment()) .commit(); } } public class FlutterFragment extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); getActivity().getSupportFragmentManager() .beginTransaction() .add(R.id.container, Flutter.createFragment("/")) .addToBackStack("flFlutter.createFragmentutter") .commit(); return rootView; } }

      通過 Flutter.createFragment("/") 設置跳轉路由;

      小菜直接運行 debuge 模式一切正常,只是在跳轉 Flutter 時不如直接跳轉原生流暢,后期優化;而打包成 release 包與 Android 原生相同,無需特別處理 Flutter Module;

      注意事項

      小菜在集成過程中,使用 Flutter 時會提示 SDK 最低版本在 16 以上,需注意;

      小菜在學習過程中,無論是命令行創建還是 AndroidStudio 工具創建 Flutter Module 路徑并非一定要與 Android Project 同級,關鍵是 setting.gradle 路徑配置;

      new File 文件第一個參數 settingsDir.parentFile 即 Android Project 所在文件路徑,第二個參數為 Flutter Module 中 .groovy 路徑;我們可以使用只有一個參數的完整路徑;

      // 兩個參數 evaluate(new File( settingsDir.parentFile, 'my_flutter/.android/include_flutter.groovy' )) // 一個參數 evaluate(new File( '/Users/user/Documents/workspace/ACE_Flutter/flutter_module01/flutter_module01/.android/include_flutter.groovy' ))

      小菜測試是,在 setting.gradle 中引入多個 evaluate,以為可以同時引入多個 Flutter Module,而實際是后面的引入會覆蓋先前的引入,以最后一個 evaluate module 為準;

      小菜對 Android 與 Flutter 交互接觸較少,需進一步學習;如有錯誤請多多指導!

      來源:阿策小和尚

      歡迎閑來吐槽~

      Android Flutter iOS

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:制造車間生產管理流程(生產車間工藝流程管理)
      下一篇:excel線性插值(excel非線性插值)
      相關文章
      亚洲五月午夜免费在线视频| 亚洲综合国产成人丁香五月激情| 日韩在线视精品在亚洲| 亚洲伦另类中文字幕| 337p日本欧洲亚洲大胆裸体艺术| 国产亚洲情侣久久精品| 国产精品亚洲一区二区无码| 国产精品无码亚洲精品2021| 亚洲欧美日韩综合久久久久| 亚洲国产精品网站在线播放 | 国产亚洲精品成人a v小说| 亚洲国产成人乱码精品女人久久久不卡| 亚洲av日韩av永久在线观看 | 久久丫精品国产亚洲av不卡 | 亚洲AV无码成人精品区狼人影院 | 亚洲国产精品ⅴa在线观看| 亚洲日韩精品无码专区加勒比☆| 亚洲日韩国产一区二区三区在线 | 四虎精品亚洲一区二区三区| 自拍偷自拍亚洲精品偷一| 成人伊人亚洲人综合网站222| 国产精品亚洲综合一区在线观看 | 爱情岛论坛网亚洲品质自拍| 久久精品国产精品亚洲艾草网美妙| 中文字幕精品无码亚洲字| 国产亚洲人成无码网在线观看 | 亚洲av女电影网| 久久久久亚洲av无码专区导航| 99人中文字幕亚洲区| 亚洲免费在线视频观看| 亚洲中文字幕无码mv| 99亚洲精品卡2卡三卡4卡2卡| 亚洲成年看片在线观看| 在线观看亚洲精品国产| 国产AV无码专区亚洲AV毛网站| 激情内射亚洲一区二区三区| 亚洲AV无码专区在线亚| jizzjizz亚洲日本少妇| 国产亚洲精品久久久久秋霞| 香蕉蕉亚亚洲aav综合| 亚洲卡一卡2卡三卡4麻豆|