本篇主要讲解:

  • 如何在Android原有项目中创建flutter模块;
  • Android 原生代码打开flutter界面并传递数据,flutter显示接收到的数据(以简单的demo讲解)

效果图如下:

flutter与android混合开发一:Android原生项目创建flutter模块、Android打开Flutter界面并传递数据_第1张图片                                flutter与android混合开发一:Android原生项目创建flutter模块、Android打开Flutter界面并传递数据_第2张图片

 

步骤:

一. Android原有项目创建flutter模块 

1.在项目下(eg:  项目路径是E:\project_code),打开Terminal,并输入创建flutter模块代码:

注:因为project_code项目中原先已经创建了flutter模块,是同样的操作,为了详细讲解并截图,所以新建项目操作一遍,后续的相关代码、截图会在project_code项目中。

flutter create -t module flutter_module

flutter与android混合开发一:Android原生项目创建flutter模块、Android打开Flutter界面并传递数据_第3张图片

 

2. 配置

2.1 settings.gradle下,输入如图代码:

flutter与android混合开发一:Android原生项目创建flutter模块、Android打开Flutter界面并传递数据_第4张图片

 

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,未来继续努力! 

更多相关文章

  1. React Native封装Android原生UI和Android原生模块,并且集成腾讯云
  2. Android网络游戏之神农诀项目开发--视频
  3. Android项目发布 ---- Jcenter篇
  4. Android Studio(五):修改Android Studio项目包名
  5. android项目案例6- 基于Android studio的android用户注册
  6. Eclipse中Android项目XML文件的格式化配置
  7. pandaboard ES学习之旅——5 Android Linux内核源代码下载与编译
  8. 创建Android工程时报错:Errors running builder 'Android resour
  9. windows下载android源代码

随机推荐

  1. 用Scroller完成一个简单的ViewPager
  2. Android判断程序是否第一次运行
  3. Android(安卓)应用程序之间数据共享—Con
  4. Android(安卓)实现颜色渐变的一个小 tip
  5. Android(安卓)DataBinding 找不到生成的b
  6. Android创建文件夹
  7. Android瀑布流的实现
  8. Android(安卓)xmlns 的作用及其自定义
  9. Android(安卓)Studio 1.0 (稳定版) 完全
  10. [Android] 该文件包与具有同一名称的现有