android 原生项目 集成 Flutter

第一种方式:
步骤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),
      );
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容