博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android工程集成flutter
阅读量:6994 次
发布时间:2019-06-27

本文共 3455 字,大约阅读时间需要 11 分钟。

Android工程集成flutter

官方方案

第一个步: 新建一个标准的APP工程testFlutterInAPP,APP目录下面通过命令创建flutter模块工程

flutter create -t module my_flutter

编译flutter 代码生成Android的AAR文件

$ cd .android/$ ./gradlew flutter:assembleDebug复制代码

AAR 文件生成到.android/Flutter/build/outputs/aar/目录下面

添加Host APP 依赖flutter module 模块,在setting.gradle 文件中加入

include ':app'                                     // assumed existing contentsetBinding(new Binding([gradle: this]))                                 // newevaluate(new File(                                                      // new  settingsDir.parentFile,                                               // new  'my_flutter/.android/include_flutter.groovy'                          // new)) 复制代码

app/build.gradle 增加对flutter 工程依赖

// testFlutterInAPP/app/build.gradledependencies {  implementation project(':flutter')}复制代码

构建成功后,执行Android的run启动应用 ,点击打开flutter 。

Java 层代码

openFlutter.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                View flutterView = Flutter.createView(                        MainActivity.this,                        getLifecycle(),                        "route1"                );                FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(600, 800);                layout.leftMargin = 100;                layout.topMargin = 200;                addContentView(flutterView, layout);            }        });复制代码

flutter 代码

import 'dart:ui';import 'package:flutter/material.dart';void main() => runApp(_widgetForRoute(window.defaultRouteName));Widget _widgetForRoute(String route) {  switch (route) {    case 'route1':      return new MyApp();    case 'route2':      return new MyApp();    default:      return Center(        child: Text('Unknown    route1 : $route', textDirection: TextDirection.ltr),      );  }  return new MyApp();}class MyApp extends StatelessWidget {  // This widget is the root of your application.  @override  Widget build(BuildContext context) {    return new MaterialApp(      title: 'Flutter Demo',      theme: new ThemeData(        primarySwatch: Colors.blue,      ),      home: new MyHomePage(title: 'Flutter Demo 1111'          'Home Page'),    );  }}class MyHomePage extends StatefulWidget {  MyHomePage({Key key, this.title}) : super(key: key);  final String title;  @override  _MyHomePageState createState() => new _MyHomePageState();}class _MyHomePageState extends State
{ int _counter = 0; void _incrementCounter() { setState(() { _counter++; }); } @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new Center( mainAxisAlignment: MainAxisAlignment.center, children:
[ new Text( 'You have pushed the button this many times:', ), new Text( '$_counter', style: Theme.of(context).textTheme.display1, ), ], ), ), floatingActionButton: new FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: new Icon(Icons.add), ), // This trailing comma makes auto-formatting nicer for build methods. ); }}复制代码

运行 flutter 工程 ,进入my_flutter 目录执行flutter run 命令

即可启动flutter ,r == hot reload R == hot restart q == quit d == detach,

或者启动Android应用调试

但是,好像DEBUG无效 ,等下在验证

闲鱼方案

连接

转载地址:http://azcvl.baihongyu.com/

你可能感兴趣的文章
关于rpm包的安装卸载等
查看>>
datetimepicker 开始时间小于结束时间
查看>>
三个数相加等于目标数的问题
查看>>
IEEE的论文需要注意的一些
查看>>
nginx 匹配顺序
查看>>
数集合有多少个TOJ(2469)
查看>>
CSUFT 1003 All Your Base
查看>>
多少人没熬过那三厘米!
查看>>
I.MX6 ubuntu-core-14.04 Apache php mysql Qt5
查看>>
在react native 中Async/Await的使用说明和方法
查看>>
在UnrealEngine中用Custom节点实现高斯模糊
查看>>
11-22 JS中级复习
查看>>
设计模式学习笔记-抽象工厂模式
查看>>
ArcEngine10.0三维开发
查看>>
[2015-3-28]Asp.net源码发布
查看>>
VS窗体换肤
查看>>
Git 标签
查看>>
C# 使用Xpath读取XML
查看>>
soupui :java.lang.reflect.InvocationTargetException
查看>>
redis rdb文件解析
查看>>