经过最近对 Flutter 开发的大体了解,感觉最深的简单归纳就是:Widget 就是一切外加组合和响应式,咱们开发的界面,经过组合其余的 Widget 来实现,当界面发生变化时,不会像咱们原来 iOS 或者 Andriod 开发同样去直接修改 UI 元素,而是去去更新状态,根据新的状态来完成 UI 的构建,这一点是否是跟 Vue、React 很像。编程
关于 Widget 的具体使用,我也不打算去写,若是须要对某个知识点须要深刻探索下的话,可能会记录下,其实对 Widget 学习你们能够参考 Flutter Api 文档地址以下:https://api.flutter.dev/> ,... 。api
要理解 Flutter 跨平台实现的缘由,先了解下屏幕显示图像的基本原理。weex
屏幕显示器都是有一个个的物理显示单元构成,每一个物理单元称之为一个像素点,每个像素点能够承载多种颜色的显示,屏幕显示器可以显示图像就是由于不一样的像素点上呈现的不一样的颜色,最终呈现出来一个完整的图像。编程语言
一般说的同一面积屏幕显示器,屏幕分辨率越高,显示器能够呈现的元素就会越多,咱们看到的画面就会越清晰。学习
咱们知道手机屏幕刷新频率是 60Hz ,当一帧画面显示完成后,准备下一帧时,显示器会发出一个垂直同步信号,这样在 1s 内显示就完成了 60 次这样的操做,而每次操做中,都是完成 CPU 将计算好的内容,同步到 GPU ,GPU 对要显示的内容进过渲染操做,放入到了缓冲区中,等待显示器去显示,整个操做都是有操做系统的硬件系统来完成的。操作系统
iOS 、Andriod移动设备的 GUI 显示都是这样一个原理,其实不一样操做系统 UI 控件,只是操做系统去操做硬件系统 API 的一层封装,若是咱们直接操做底层 API 去完成 GUI 开发是一件很是痛苦的事。ip
Flutter 只是用一种编程语言,也就是采用一套Dart API ,底层经过 OpenGL(操做系统 API 的一个封装库)这种跨平台的绘制库,来实现一套代码跨端使用,也就是说 Flutter 所谓跨平台只是 Dart 调用 OpenGL ,而后 OpenGL 再去调用操做系统底层的 API 。跟 ReactNative 、weex 不一样的是,他们须要依赖 JavaScriptCore 引擎去跟原生应用的通讯。开发
固然咱们不去谈论方案的优劣,自己他们选择的方向就不一样。文档