本篇主要讲解:

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

更多相关文章

  1. Android与linux的区别与联系
  2. Android采用HTML设计软件界面
  3. Google放弃“不做恶”? 意欲垄断Android
  4. 安卓大佬力荐,送你一份超详细的Android学习教程指南
  5. 利用HTML5开发Android笔记
  6. Android(安卓)NDK入门实例 计算斐波那契数列一生成jni头文件
  7. Android网络游戏之神农诀项目开发--视频
  8. android 环境安装、helloworld demo 创建运行
  9. Android学习札记13:为什么更推荐使用Parcelable来在Activity间传

随机推荐

  1. android memory
  2. Android 图片透明度处理代码
  3. 【笔记】Android开发中从EditText中获取
  4. Picasso picasso-强大的Android图片下载
  5. android百度定位
  6. 一些常用SD卡操作的方法,APk管理之类的方
  7. Android读取服务器图片
  8. Android 通知之 Notification
  9. Android Bad notification for startFore
  10. Android中执行adb命令