第一种方式:
步骤1、把Flutter 转换成arr 文件 地址:https://juejin.im/post/5bac9b1de51d450e452ac1c7
提取arr 要点:1、build.gradle 中的compileSdkVersion minSdkVersion targetSdkVersion 改成跟目标项目的版本号一样
2、AndroidManifest 中的
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
注释掉
3、application 中的label 也得去掉
4、在app 的build.gradle 中添加
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
第二种方式:
原文地址:1、https://www.jianshu.com/p/646d18e5d75f
2、https://www.cnblogs.com/fuyaozhishang/p/9617234.html
注意:1、不要直接使用AS生成Flutter 项目 生成项目 会比 用命令生成少文件
2、原生调用Flutter页面
class FlutterActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_flutter)
val flutterView = Flutter.createView(this@FlutterActivity,lifecycle,"route1")
val layout = FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT)
addContentView(flutterView, layout)
}
}
3、Flutter 调用设置
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),
);
}
}