flutter与android混合开发一:Android原生项目创建flutter模块、Android打开Flutter界面并传递数据
16lz
2021-12-04
本篇主要讲解:
- 如何在Android原有项目中创建flutter模块;
- Android 原生代码打开flutter界面并传递数据,flutter显示接收到的数据(以简单的demo讲解)
效果图如下:
步骤:
一. Android原有项目创建flutter模块
1.在项目下(eg: 项目路径是E:\project_code),打开Terminal,并输入创建flutter模块代码:
注:因为project_code项目中原先已经创建了flutter模块,是同样的操作,为了详细讲解并截图,所以新建项目操作一遍,后续的相关代码、截图会在project_code项目中。
flutter create -t module flutter_module
2. 配置
2.1 settings.gradle下,输入如图代码:
2.2 build.gradle(Module: app),加入如下代码:
android { defaultConfig{ **************** minSdkVersion 不能低于16 *************** } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }}dependencies { *********** implementation project(':flutter')}
2.3 同步项目(右上角的Sync Now)
二. Android 打开Flutter界面并传递显示数据
1. Android代码(写在app里面,其它模块怎么调用flutter,正在研究):
1.1 activity_flutter_demo.xml布局(布局用了DataBinding,重点只需要一个button,一个FrameLayout)
<?xml version="1.0" encoding="utf-8"?>
1.2 FlutterDemoActivity点击按钮时,加载flutter布局并传递数据
/** * 这个方法是button的点击事件,是DataBinding的写法,重点看里面的如何加载flutter及传递数据, * 点击事件,按照自己的来写 * 加载flutter界面 * @param view */ public void clickLoad(View view){ FlutterFragment fragment= FlutterFragment.withNewEngine().initialRoute("我是由Android传到flutter的内容").build(); getSupportFragmentManager().beginTransaction().add(R.id.fl_flutter, fragment).commit(); }
2. Flutter接收传递参数并显示(main.dar代码)
import 'dart:ui';import 'package:flutter/material.dart';void main() => runApp(MyApp(initParams: window.defaultRouteName));class MyApp extends StatelessWidget { final String initParams;//接收的参数 const MyApp({Key key, this.initParams}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( home: MyHomePage(title: 'Flutter 混合开发', initParams: initParams), ); }}class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title, this.initParams}) : super(key: key); final String title; final String initParams; @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( //显示传递过来的参数 widget.initParams, style: TextStyle(color: Colors.black, fontSize: 20), ), ], ), ), ); }}
初步实现Android调用flutter,未来继续努力!
更多相关文章
- Android与linux的区别与联系
- Android采用HTML设计软件界面
- Google放弃“不做恶”? 意欲垄断Android
- 安卓大佬力荐,送你一份超详细的Android学习教程指南
- 利用HTML5开发Android笔记
- Android(安卓)NDK入门实例 计算斐波那契数列一生成jni头文件
- Android网络游戏之神农诀项目开发--视频
- android 环境安装、helloworld demo 创建运行
- Android学习札记13:为什么更推荐使用Parcelable来在Activity间传