将Flutter以Module形式嵌⼊已有项⽬
官⽅⽂档->
本⽂只针对Android客户端集成操作,以下是亲⾃试⼿,按照官⽅⽂档有些⼩改动。
已有项⽬相关环境:
1. minSdkVersion 16
2. gradle 插件v
3.1.1
3. gradle 版本 v
4.10.1
4. flutter SDK版本 v1.
5.4-hotfix.2
集成步骤(Mac os)
1. 打开terminal,进⼊到你项⽬的根⽬录
cd some/yourproject
复制代码
2. 然后输⼊以下命令创建flutter module
//my_flutter为你的module名字
flutter create -t module my_flutter
复制代码
3. 切换到flutter module的android⽬录下,并让flutter进⾏debug
cd .android/
./gradlew flutter:assembleDebug
复制代码
这样就⽣成了flutter-debug.aar(路径:'.android/Flutter/build/outputs/aar/.')。 4. 确认你的宿主App的adle配置有:
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
复制代码
5. 让宿主App以来flutter module,打开根项⽬adle
include ':app'
setBinding(new Binding([gradle:this]))
//YourProjecyName 为你项⽬的⽂件名,按照官⽅⽂档的写法,会不到对应的路径,少了⼀个层级
evaluate(new File(
settingsDir.parentFile,
'YourProjecyName/my_flutter/.android/vy'
))
复制代码
6. 项⽬同步成功后需要在app的adle⽂件中添加flutter的依赖。
//官⽹的⽅式
dependencies{
implementation project(':flutter')
}
//上⾯的⽅式各种报错,⽆法到对应的module
/
/换了种⽅式
dependencies{
implementation project(path: ':flutter')
}
复制代码
终于整个项⽬跑通了,去app内的⽂件内,也能引⼊flutter相关的Api。⼤功告成。
Flutter加⼊到项⽬中
有两种⽅式可以将flutter的视图添加到原⽣项⽬中:
以下是flutter⼊⼝函数main.dart
import 'package:flutter/material.dart';
import 'dart:ui';
import 'package:bear_flutter/ui/WolfPage.dart';
void main() => runApp(_widgetForRoute(window.defaultRouteName));
Widget _widgetForRoute(String route){
switch(route){
case 'route1':
flutter开发appreturn WolfPage();
default:
return Center(
child: Text("haha"),
);
}
}
复制代码
1. 添加Flutter fragment
在原⽣Activity添加FlutterFragment
override fun onCreate(savedInstanceState: Bundle?) {
setContentView(R.layout.activity_wolf_flutter)
//route1 为flutter项⽬中的叶脉你路由名字
supportFragmentManager.beginTransaction().replace(ainer, ateFragment("route1")) mit()
}
复制代码
2. 添加flutterView
//route1 为flutter项⽬中的叶脉你路由名字
View flutterView = ateView(
MainActivity.this,
getLifecycle(),
"route1"
);
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(600, 800); layout.leftMargin = 100;
addContentView(flutterView, layout);
复制代码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论