Android手动构建aar集成Flutter

下载flutter

执行flutter_console.bat,执行flutter doctor


在你的Android应用同级路径下执行:

cd some/path/
flutter create -t module --org com.ymbok flutter_moudle

完成后进入到项目路径编译aar:

cd flutter_moudle
flutter build aar

编译完成后在project 的build.gradle添加配置:

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.android.tools.build:gradle:4.1.2'
        classpath "com.alibaba:arouter-register:1.0.2"

    }
}
allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.google.com/dl/android/maven2' }
        maven { url "https://jitpack.io" }
        maven {
            url "file:///E:/flutter_module/build/host/outputs/repo"
        }
        maven {
            // libflutter.so 和 libflutter.jar 仓库地址
            url 'http://download.flutter.io'
        }
    }
}

在app的build.gradle中添加配置:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"implementation 'com.ymbok.flutter_module:flutter_release:1.0'

创建Activity:

import android.os.Bundle;
import io.flutter.embedding.android.FlutterActivity;

public class FlutterTestActivity  extends FlutterActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

运行即可看到新页面了

从原生跳转到不同的flutter页面:

startActivity(FlutterActivity.withNewEngine().initialRoute("/hello").build(activity));

flutter代码:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      //home: HelloPage(title: 'Home Page'),
      routes: MyRouter.routes,
      initialRoute: MyRouter.helloPage,   //初始页面路由可代替home
    );
  }
}

class MyRouter {

  static final helloPage = '/hello';
  static final detailPage = '/detail';

  static final Map routes = {
    helloPage: (ctx) => HelloPage(title: 'Hello Page'),
    detailPage: (ctx){
      return DetailPage();
    }
  };
}

class HelloPage extends StatefulWidget {
  HelloPage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  _HelloPageState createState() => _HelloPageState();

}

class _HelloPageState extends State {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children:[
            Text(
              'Hello World',
            ),
          ],
        ),
      ),
    );
  }
}


本站内容来源于作者发布和网络转载,如有版权相关问题请及时与我们取得联系,我们将立即删除。

 关于作者
 热门教程
通过Git下载和提交代码的命令记录
安装好git后: 1、配置邮箱 git config --global user.name ymbok git con
2023-08-15
剑道仙尊
59
通过ADB在Android系统中快捷截屏和录屏的方法
连上ADB线后: 截图 创建一个BAT文件,用于截图,直接双击运行即可将图片保存到D:\screenshot目录,提前
2023-08-15
剑道仙尊
105
Android12 源码下载与编译
下载Android12 源码 sudo apt-get update 安装curl sudo apt install
2023-04-25
剑道仙尊
125
android生成签名文件jks并获取SHA1
打开Android Studio终端,输入: keytool -genkey -alias app -keyalg R
2022-07-13
剑道仙尊
93
Flutter开发APP更改状态栏文字颜色
void main(){ runApp(MyApp()); /// 状态栏文字黑色 SystemChrome
2022-06-09
剑道仙尊
132
Android Swicth按钮样式自定义
<Switch android:id="@+id/switch_btn" android:layout_wi
2022-06-07
剑道仙尊
133
Pagging3写起来太麻烦,简单封装及其简单
Pagging3分页写起来很麻烦,这里分享一下我的简化开发的方法,思路就是把获取数据的函数分离出来 首先定义一个基础的
2022-06-07
剑道仙尊
187
在项目中使用Hilt Retrofit使用总结
直接开始,首先我们看看怎么使用Hilt编写 Retrofit 接口请求类 用@Provides注解定义可注入的实例的提
2022-06-07
剑道仙尊
197
Android Jetpack Paging 3 下拉刷新和加载更多代码示例
使用Paging3实现列表的下拉刷新和加载更多 首先定义列表布局文件 <androidx.swiperefres
2022-06-07
剑道仙尊
434
StatefulBuilder实现Dialog的刷新
在Flutter中使用Dialog时,因为 showDialog返回的context与当前页面的 context不是同
2022-06-07
剑道仙尊
136