flutter学习笔记四(在android项目中集成flutter)

前言
  • 最近在使用flutter仿写公司的客户端,在一段的时间的使用后发现flutter在一些常见的控件中,很多无法满足,往往在轮子上需要耗费大量的时间,目前就我们的项目来看,相同的时间,如果改用Native去写,我觉得两者进度并没有多大的差异,可能原生端反而会更快一些。
  • 在现有项目中集成Flutter,可以在flutter还没有成熟的时期,去使用,追求共通点,同时对于已有客户端进行混编
    现有项目中集成Flutter
  1. 创建Flutter module模板(我们在一个Android项目目录同级目录下创建模板工程)
    flutter create -t module my_flutter
  2. 添加Flutter module到Android项目中
  • 修改Android项目根目录的settings.gradle,将Flutter module作为一个子工程添加到项目中
  // MyApp/settings.gradle
include ':app'                                     // assumed existing content
setBinding(new Binding([gradle: this]))                                 // new
evaluate(new File(                                                      // new
  settingsDir.parentFile,                                               // new
  'my_flutter/.android/include_flutter.groovy'                          // new
))                      
  • Sync一下,可以发现添加了两个module到项目中了。其中一个是flutter的module,其中包含了一些简单的封装,供Java代码调用。另一个是package_info的module,是一个Flutter插件就是获取app名称、包名、版本等信息
  1. 在app的build.gradle中添加依赖
 // MyApp/app/build.gradle
:
dependencies {
  implementation project(':flutter')
}
  • Sync一下,到此,这个Flutter module就被添加到了Android项目中了
    开始使用
  1. 在我的MainActivity.java里面写代码
// MainActivity.java
fab.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);
  }
});
  • 上面我们使用字符串“route1”告诉Dart代码在Flutter视图中显示哪个小部件。 Flutter模块项目模板的lib / main.dart文件包含提供的路由字符串,需要哪些路径字符串以及如何解释它们取决于我们自己
    -效果如下所示,但是我还是有些失望,黑一下的效果的确让人难以接受,不过这项技术确实挺有吸引力,一起期待flutter的完善吧


    GIF.gif
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,378评论 25 709
  • 本文列举了项目开发使用Flutter会遇到的问题,以及如何使用Flutter module在现有项目中集成Flut...
    Q吹个大气球Q阅读 10,165评论 7 15
  • 大多数人都是“心随境转”,真正能够做到“境随心转”,就是一个智者了。【鲁先圣智慧断语】
    鲁先圣阅读 2,394评论 0 1
  • 往事如风非风 来不及的种种 挥不去的种种 都飞舞在脑中 这真的很头痛 好想疯 旧创仍在痛 只好去吹风 逃避情怂恿 ...
    Y神牛阅读 3,486评论 1 4
  • 各位MM,GG大家好! 都知道在社会和人际交往中美是你的优势,帅是你的魅力!把自己变得更美更帅能使你比别人少...
    骄傲浪子阅读 4,681评论 0 16