通过结构法了解 Flutter,为后来开发做尝试

# 通过结构法了解 Flutter,为后来开发做尝试

先形成自己的框架

  1. 搜集资料的方式:
    1. 必应搜一下官方文档,看的不太明白,我想知道他具体是干啥的
    2. 知乎搜了一下,有一个2020年的万字长文,还有其他小文章
      1. 看了之后对它有了基础的了解,是对 ios 和 app 进行开发的SDK,比较接近底层OS,并且有自己的独立渲染层,例如咸鱼APP就没办法长按复制文字,因为这本质上就是渲染了一个动画在app上。
      2. 并且能过很好的防止爬虫技术!
      3. 并且它的性能是除了 原生 以外最高的,比 RN 还高!
    3. 掘金搜一下
      1. 它与 RN 这种使用 JSCore 的方式不同,它从一开始就抛弃旧浏览器的兼容,拥抱移动端开发,使用 dart 语言编写,并且支持 aot 和 jit 两种方式编译,没有使用 前端三件套,执行效率比jscore高
      2. 除了语言,flutter 还重写了UI框架,从控件到渲染全部重写,实现不同平台有相同的体验
      3. Flutter 和 RN 的本质区别是:RN需要使用JS虚拟机调用安卓或者IOS的系统组件进行渲染,而 Flutter 是自己完成了组件的渲染!
      4. 局限:flutter 虽然能够自己独立渲染UI组件,从而避免了借助原生控件代理渲染的适配问题,但是除了 UI渲染,APP或IOS开发不可避免地需要借助于原生的一些控件,例如开发地图、调用系统api、蓝牙、视频等

总结一下我目前认识的 flutter

  1. Flutter是使用 Dart 语言编写,并且使用 Aot 编译的一款实现 APP 和 IOS 跨端开发的SDK。并且有自己的UI渲染方式。
  2. 优点:
    1. 不使用 前端三件套进行开发,摒弃了浏览器兼容问题,直接拥抱移动端它具有非常好的性能
    2. 使用与原生安卓一样的skia引擎开发以及拥有自己的UI渲染方式,很大程度上提升了 UI 的兼容性,能实现不同平台上UI一致的效果
    3. 因为有自己的独立渲染方式,与原生渲染不同,所以它的反爬虫能力比较强,展现在页面上本质上就是渲染了图片,有一个具体的例子就是咸鱼app的长按不能实现复制的功能
  3. 缺点:
    1. 对于一些需要用到原生控件的场景会非常麻烦,引入原生的代价比较大。比如蓝牙、地图、视频等
    2. 没有很好的热更新支持,毕竟最后要将 Dart 语言转化为 二进制
    3. 比较偏底层,最终也是需要去了解 APP 和 IOS 的开发的

实践:从小郭2018年的一篇教程开始做起,看了评论还有一个月前评论的人说学到了很多,至少在尝试之前也不用太担心历史版本问题了

  1. Dart 是强类型语言,但也是动态类型语言,对前端也比较友好,不应该为学习 flutter 的阻碍

  2. 尝试运行第一个项目()

    1. 在官网安装 flutter SDK
    2. 在 VScode 安装了 flutter 插件,并且附带 dart 插件,新建一个 Flutter 项目(不小心把之前前端的目录清空了,也算是断舍离吧害)
    3. 下载雷电模拟器,并且在 vscode 尝试 debug 运行,但结果是失败的,因为运行环境没有对应的模拟器给选择,想选择 android 却报错没有对应的 sdk
    4. 去了解下载 sdk 的方式,有两种方式:下载 AS 或者 单独下载 ASsdk,想着下载一个 AS 也没啥就下载了,并且在 AS 中选择了对应的 SDK 进行下载,通过 gpt 和 掘金帖 确保东西都下完全了
    5. 接着把 SDK 的路径添加到 用户环境变量 中,此时去 vscode 就能看到可以选择 Android 的模拟器了,并且我也开启了 雷电模拟器,点击左侧的 运行 进行 flutter 项目的运行,等待一段时间即可在雷电模拟器中看到效果

    image-20231118151459600