Flutter学习体会

简介

      Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。

开发环境

      Fultter (android SDK、FultterSDK、Drat SDK),相比RN环境配置更加顺畅一点。

开发工具

      Flutter开发工具是基于Android Studio的,相对功能健全,运行也比较迅速。

实际开发

      Flutter是基于Dart语言开发的,强烈建议先熟悉一下dart基础语法再开始写代码。
并且dart是单进程的,不会出现闪退类似情况。Flutter自身的高性能渲染引擎(Skia) 自绘,在保持原生性能的条件下实现了跨端编程,可以使多端设计效果保持统一,无需刻意去做适配。

Flutter中的image所占的内存以及优化

      Android将中内存分java内存或native内存,通常在代码中的申请的内存都在这两个 范围内,java内存是指java或kotlin分配的内存对象。native内存是指由C/C++中 分配的内存,也包括一些android原生系统占用的内存,如图像资源和其他图形等。
Flutter中的image占用的不用这两种内存,而是Graphics内存,Graphics内存内存是指图形缓冲区队列向屏幕显示像素所使用的内存,图形缓冲区是指GL表面,GL纹理等。Graphics内存是与CPU共享的内存,而不是GPU专用的内存。
Flutter首次进入app的时候会卡一下屏幕,在Debug版本有明显感受,大概会黑屏2秒,release版本会好很多。解决办法预先让将要使用的FlutterView加载好首帧,这样,在真正使用的时候就很快了,可以先建立一个只有1个像素的窗口,在这个窗口里面完成FlutterView首帧渲染。

与原生交互

Flutter定义了三种Channel:

  1. BasicMessageChannel:用于传递字符串和半结构化的信息
  2. MethodChannel:用于传递方法调用(method invocation)
  3. EventChannel: 用于数据流(event streams)的通信

Flutter与原生交互需要自己实现插件,现在大部分第三方插件都是以这种方式实现的。

Flutter打包

      Flutter打包和Android原生Gradle打包一样,还是非常方便的。不过相对比原生apk, Flutter的apk会比原生的打十几兆甚至几十兆。

Flutter运行模式

      Flutter常见的种运行模式:Debug,Release和Profile。Release和Profile模式比 较类似,不同之处在于Profile模式的服务扩展的支持,支 持跟踪,以及最小化使 用跟踪信息需要的依赖。Profile并不支持模拟器,原因在于模拟器上的诊断并不代 表真实的性能。重点截介绍Debug和Release的差异

Debug模式:
使用JIT编译,支持模拟器和设备。打开了断点支持,包括所有的调试 信息,服务扩展和Observatory等调试辅助。此模式为快速开发和运行做了优 化,但并未对执行速度,包大小和部署做优化。所以能实现秒级别的hot reload

Release模式:
使用AOT编译,只支持真机,不支持模拟器。尽可能多地去掉了调试 信息,关闭了所有调试工具。为快速启动,快速执行,包大小做了优化。禁止了所有调 试辅助手段,服务扩展。

猜你喜欢

转载自blog.csdn.net/TLuffy/article/details/105631591