1、創建Flutter Mix的Android工程:
注意:如果是使用androidx庫,那麼默認建立的Flutter模塊項目要進行依賴的替換,後面會詳細講解。
2、建立要項目後在app工程的build.gradle中android{}節點下加入:
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
3、打開Terminal輸入創建flutter模塊命令:
flutter create -t module --org com.demo my_flutter
4、打開項目settings.gradle文件,將Flutter模塊的android調用引入進工程:
setBinding(new Binding([gradle: this])) // new
evaluate(new File( // new
settingsDir.getPath(), // new
'my_flutter/.android/include_flutter.groovy' // new
))
5、在app工程的build.gradle中添加Flutter模塊的依賴:
implementation project(':flutter')
6、如果是使用androidx的依賴庫,那麼還需要在Flutter模塊的pubspec.yaml中找到androidX設置爲true並rebuild項目:
7、修改my_flutter下lib中main代碼,定義android調用flutter的路由:
import 'dart:ui';
import 'package:flutter/material.dart';
void main() => runApp(_widgetForRoute(window.defaultRouteName));// defaultRouteName爲android調用flutter的傳參
Widget _widgetForRoute(String route) {
switch (route) {
case 'flutter/main': //根據android傳參返回對應的flutter頁面
return MyApp();
default:
return Center(
child: Text('Unknown route: $route', textDirection: TextDirection.ltr),
);
}
}
8、在android中調用Flutter頁面:
// 以Fragment的形式加載Flutter頁面
findViewById(R.id.bt_load).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.replace(R.id.fl_content, Flutter.createFragment("flutter/main")); // 傳入路由參數
tx.commit();
}
});
9、運行: