Flutter实战电子书
Flutter中文网
Flutter 常用命令行
bug: 修复命令行不可用的问题
备注:最近在琢磨学习Flutter,主要是参考学习上面资料,首先表示大神辛苦整理表示感谢,下面多是参考上面总结类似于笔记,便于后续参考。
- 原生开发和跨平台开发对比
- 原生开发的优点:
* 原生系统控件渲染ui样式,性能高,动画流畅,滑动手势等比较好处理,整体用户体验好。
* 系统提供了全部功能访问的api,可以直接访问,比如摄像头,定位等功能 - 原生开发缺点:
* 开发成本高,每一个平台都是专有系统和api开发都需要专业人员开发,多平台涉及到的产品测试资源也多,提升了整个产品的研发成本
* 版本更新周期长,一版功能由研发到测试再到发布上线审核通过跨的周期比较长,已不太适合当前移动互联网快速发展和功能快速迭代更新。 - 相对比跨平台开发则是将原生优缺点颠倒过来,多数功能跨平台,原生平台更多是支撑作用,节省开发成本,跨平台多数支持热更新,无需发版,提升版本迭代功能,同样缺点就是不能直接访问系统某些功能,渲染也不是原生控件直接渲染导致用户体验很差。
即原生技术优缺点整理:
* 使用系统ui绘制引擎,性能好,动画流畅,手势事件响应快,用户体验好
* 系统提供全部终端特别是硬件功能api,比如摄像头,定位,各种传感器等
* 开发成本高,开发周期相对跨平台要长
跨平台的优缺点:
* 项目大部分功能一套代码搞定,相应的原生平台提供支持作用,即跨平台机制。
* 多数跨平台支持热更新,版本迭代相对于原生迭代的快
* 开发成本相对比较低,开发周期也相对比较快
* 不能彻底抛弃原生,需要原生提供支持
* 性能达不到原生的效果
- 当前跨屏技术实现及其对比
-
当前跨平台开发技术下面三种:原生+h5(js),原生控件+js,自研UI引擎+原生三种,下面是大神整理的三种的区别,直接复用:
跨平台技术对比 - 多数项目中使用最多的是第一种实现,第二种实现以fc的react native框架居多,第一种更多的也是webview渲染页面,js和native通信,虽有框架好像用的也不多,当前主要是介绍第三种(个人对rn研究也不深),所以前两种就不深入介绍,有兴趣可以找其他文档或者上面参考文章。
- Flutter特性
- flutter样式层实现不依赖与原生系统控件,自研2d样式绘制引擎skia,跨平台而且高性能
- flutter是基于dart开发语言研发的,dart语言具有多种研发模式:静态编译(java)和动态编译(js),开发阶段可以动态编译解释方式提升测试,发包可以使用静态编译方式在运行时比着js这样边解释边执行语言更快执行,具体如下:
如上开发效率高
高性能
快速分配内存
类型安全
开发文档及其问题平台齐全,有助于开发学习
针对dart语言,刚入门,上面都是大神文章总结的,后续学习过程中比对。
即Flutter的优势:
* 跨平台,支持ios和Android两个平台开发
* 自研ui引擎skia,Dart作为runtime,text作为文本排版引擎,不依赖于原生系统ui,ui性能比较高
* 支持开发过程中热更新提升开发效率
* 当前flutter发布到3.0,系统还不够完善开发生态也不够完善。
Flutter 使用场景:
- 跨平台:ios,Android,web
- 脚本和服务端(Dart语言)
-
Flutter框架层级结构
flutter框架层级
- 如图所示,可以将其层级看做三层:底层的具体实现引擎,中层的底层实现封装,上层的对外研发封装,项目开发也多是使用上层的框架封装等。
- Flutter环境搭建
- 环境搭建主要是mac+Androidstudio,其他参考大神文章。
- 安装flutter
* 去flutter sdk 官网下载对应包,并解压到对应的安装文件夹。
* 配置path路径,将flutter安装包中的bin等配置到mac系统path文件中。类Android java配置,方便命令行和ide使用
* 命令行校验是否安装成功 - Androidstudio配置
* 安装对应的flutter插件和dart插件
* 类Android工程创建,注意点:是否支持ios和kotilin都是创建过程中的可选项。 - 备注mac配置path命令的方法
* 命令行:open .bash_profile 打开命令行文件
* 在文件中按照先前的配置配置好对应的命令
* source 。bash_profile 保存命令行文件
- 第一个Flutter app
-
按照上面步骤可以很方便的Android studio中创建出flutter工程,功能层级如下:
flutter工程层级结构 - Android studio确实是很强大的一个ide,大大简化了ndk和flutter的开发流程,提升了开发效率。
- 如图所示,只是简单标识一下层级结构,存个印象,后续会根据深入学习更进一步深入flutter工程的每一个层级。
- Flutter常用的命令行命令
- flutter clean:清理flutter工程
- flutter upgrade:升级flutter sdk及其对应的工具
- flutter channel:查看当前通道sdk的的信息
- flutter build: 组建工程
- 其他对应的命令行参考文章或者命令行 flutter help 获取帮助
- 配置完路径后可能存在不能使用命令的问题需要同意一下Android的协议。