前言:Flutter的官方开发语言为Dart,这个语言也是Google出品的一个语言,即可开发服务端,也可开发app端,还可开发web端。
flutter开发app端,他的性能大大优于H5,并且能够调用硬件资源,如摄像头,由于其拥有热重载和一套代码,可在ios和android手机上,所以在开发成本和效率是高于ios和android开发。
一、Flutter框架架构
Flutter Framework
这是一个纯 Dart实现的 SDK,它实现了一套基础库,自底向上,我们来简单介绍一下:
底下两层(Foundation和Animation、Painting、Gestures)在Google的一些视频中被合并为一个dart UI层,对应的是Flutter中的dart:ui包,它是Flutter引擎暴露的底层UI库,提供动画、手势及绘制能力。
Rendering层,这一层是一个抽象的布局层,它依赖于dart UI层,Rendering层会构建一个UI树,当UI树有变化时,会计算出有变化的部分,然后更新UI树,最终将UI树绘制到屏幕上,这个过程类似于React中的虚拟DOM。Rendering层可以说是Flutter UI框架最核心的部分,它除了确定每个UI元素的位置、大小之外还要进行坐标变换、绘制(调用底层dart:ui)。
Widgets层是Flutter提供的的一套基础组件库,在基础组件库之上,Flutter还提供了 Material 和Cupertino两种视觉风格的组件库。而我们Flutter开发的大多数场景,只是和这两层打交道。
Flutter Engine
这是一个纯 C++实现的 SDK,其中包括了 Skia引擎、Dart运行时、文字排版引擎等。在代码调用 dart:ui库时,调用最终会走到Engine层,然后实现真正的绘制逻辑。
二、项目案例
前端代码地址:https://github.com/huangxiaolong1992/flutter
后端代码地址:https://github.com/huangxiaolong1992/flutter-node
模块
- 登录
- 注册
- 拉取动态
- 发表
项目最终实图
``
后台
涉及到插件模块
- node-xss
- typescript
- express
- express-jwt
- express-validator
- jsonwebtoken
- crypto
- multer
- cors
前端
- pull_to_refresh
- image_picker
- fluttertoast
- dio
- provide
总结
多看,多写,多思考。