Dart & Flutter 開發技巧 8-14
1047
2025-03-31
小菜接觸了 flutter 一段時間,但與原生交互方面還未曾接觸,今天根據 官方文檔 學習一下 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小時內刪除侵權內容。