1.創(chuàng)建flutter module
在Android Studio Terminal中輸入 如下
cd ..
flutter create -t module <module_name>
在原應(yīng)用父級(jí)目錄下創(chuàng)建flutter module,如果想將flutter module當(dāng)做原應(yīng)用的子module掀宋,則省去cd ..這一步深纲,<module_name>為你的flutter module名
2.為你的app添加flutter module依賴
(1)在原應(yīng)用的setting.gradle下添加如下代碼
setBinding(new Binding([gradle:this]))
evaluate(new File(
settingsDir.parentFile, //若做為原應(yīng)用的子mudule,則為settingsDir
'<module_name>/.android/include_flutter.groovy'
))
(2)在原應(yīng)用的build.gradle下的dependencies 添加flutter依賴
compile project(':flutter')
我的gradle版本較低劲妙,用的是compile湃鹊,高版本用implementation,與原應(yīng)用保持一致
3.執(zhí)行sync 沒報(bào)錯(cuò)就成功了镣奋,但是編輯flutter要再打開個(gè)窗口,open你的fullter module
4.原生Activity跳轉(zhuǎn)至flutter
在activity中以view的形式加載flutter币呵,參考如下
public class FlutterActivity extends BaseActivity {
private FlutterView flutterView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tr_activity_empty);
flutterView= Flutter.createView(this,getLifecycle(),"route1");
FrameLayout.LayoutParams layout=new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,FrameLayout.LayoutParams.WRAP_CONTENT);
addContentView(flutterView,layout);
}
}
在flutter的main.dart中處理路由
import 'dart:ui';
import 'package:flutter/material.dart';
void main() => runApp(_widgetForRoute(window.defaultRouteName));
Widget _widgetForRoute(String route) {
switch (route) {
case 'route1':
return SomeWidget(...);
case 'route2':
return SomeOtherWidget(...);
default:
return Center(
child: Text('Unknown route: $route', textDirection: TextDirection.ltr),
);
}
}
以下為我遇到的問題
-
Gradle DSL method not found: 'google()'
原因:因?yàn)槲业膅radle版本太低,而flutter的gradle版本較高
解決辦法:打開flutter安裝目錄下 packages/flutter_tools/gradle/flutter.gradle文件侨颈,替換 google()為maven {
url 'https://maven.google.com/'
}
2.Could not download asm-util.jar
打開settring../ Build../Gradle 取消 offline work選項(xiàng)
3.buildToolsVersion等版本問題
將flutter module下 .android /Flutter/build.gradle下相關(guān)版本設(shè)置與原應(yīng)用
保持一致