美文网首页
浅显易懂Flutter

浅显易懂Flutter

作者: 笑破天 | 来源:发表于2020-08-15 23:52 被阅读0次

    一、是什么?

    Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.--Google
    Flutter是谷歌的用来构建漂亮的、近原生的跨平台UI工具包,能够一份代码多端运行。

    主要分为三部分:Framework、Engine、Embedder(嵌入式平台),基于Framework开发App,在Engine里运行。


    Flutter框架介绍
    • Framework部分
      这一部分最底层是Foundation,也就是与Engine引擎相关的一些方法api,上一层就是动画绘制还有手势相关,其次才是Rendering相关,然后才是我们Flutter重要Widget,可以看出动画手势绘制都会重新出发render,Widget才会重新绘制。在Widget之上有两种设计的风格分别是iOS的Cupertino与Android的Material两种风格的组件库。
    • Engine部分
      底下引擎部分就是Flutter与Cordova、Ionic、AppCan、Dcloud、APICloud、React Native这些框架最根本不同的地方,Flutter不是使用标准Web技术,而是借助可移植的图形加速渲染引擎、高性能的本地ARM代码,并以此实现跨设备、跨平台的高质量用户体验。

    二、能干什么?

    1、平台一致(双端UI和业务一致)
    2、便捷开发(一份代码,双端运行)
    3、亚秒级热重载(快捷方便的试验、重构UI、添加特性和修复bug)
    4、性能直逼Native

    三、什么原理?

    1、Flutter 向 GPU 提供显示数据


    Flutter to GPU
    • GPU将信号同步到 UI 线程
    • UI 线程用Dart来构建图层树
    • 图层树在GPU 线程进行合成
    • 合成后的视图数据提供给Skia 引擎
    • Skia 引擎通过OpenGL 或者 Vulkan将显示内容提供给GPU

    2、GPU 把展示数据显示到屏幕


    GPU to 显示屏
    • CPU 将计算好的显示内容提交给 GPU
    • GPU 使用 VRAM 中的数据和命令,完成图像渲染
    • 将渲染好的结果存入帧缓冲区 (FrameBuffer)
    • 然后视频控制器将帧缓冲区的数据传递给显示器显示

    四、怎么干?

    五、灵魂拷问

    1、怎么跨平台?
    UI表达用Dart,渲染用基于C++的Dart Engine和OpenGL。

    2、“hot reload”是怎么做到的?
    hot reload 的原理是插桩,类似instant run,debug模式下,对每一个方法和成员进行插桩,运行时期reload就生效了,无需重新安装
    注意:全局变量初始化、静态成员初始化、main方法不能热加载。

    3、为什么有的时候不支持热重载?

    相关文章

      网友评论

          本文标题:浅显易懂Flutter

          本文链接:https://www.haomeiwen.com/subject/fazadktx.html