Flutter 是 Google 开源的跨平台移动开发框架。 用一套代码为 iOS 和 Android 构建高性能,美观的应用程序。它也是 Google 即将推出的 Fuchsia 操做系统的开发平台。此外,它的架构能够经过定制的 Flutter 引擎将其引入其余平台。web
Flutter 试图使移动开发更友好, 它为开发人员提供应用程序框架和可移植的运行时引擎。该框架创建在 Skia 图形库上,提供实际呈现的部件,而不只仅是原生控件的包装。后端
Flutter 作跨平台开发可以像 web 同样灵活,但同时提供流畅的性能。Flutter 附带的部件库以及开源部件使其成为一个功能丰富的平台。简单地说,Flutter 是最接近移动开发人员用于跨平台开发的理想平台,灵活性、性能几乎毫无妥协。架构
Flutter 使用谷歌开发的 Dart 语言进行开发。 Google给出了选择Dart开发Flutter的理由:框架
Flutter 分为 Framework和 Engine,咱们是基于运行在 Engine 上的Framework进行开发App。下面分别对各个模块进行介绍:函数
Flutter提供了一套丰富的Material widget,可帮助您构建遵循Material Design的应用程序。布局
Flutter也提供了一套丰富的Cupertino(iOS)风格的widget性能
Flutter Widget采用现代响应式框架构建,听说是从 React 中得到的灵感。widget的主要工做是实现一个build函数,用以构建自身。一个widget一般由一些较低级别widget组成。Flutter框架将依次构建这些widget,直到构建到最底层的子widget时,这些最低层的widget一般为RenderObject,它会计算并描述widget的几何形状。学习
Rendering动画
Flutter Widgets库使用RenderObject层次结构来实现其布局和绘制后端。 能够在应用程序中使用自定义RenderBox类来处理特定效果。但大多数状况下,都只是使用RenderObject层次调试布局问题。ui
若是直接在Rendering库上开发本身的库或应用程序,须要进行绑定(BindingBase)。默认的Widgets已经有Flutter完成绑定。 也可使用RenderingFlutterBinding,建立本身的绑定。至少须要导入ServicesBinding,GestureBinding,SchedulerBinding,PaintingBinding和RendererBinding。
Animation
Flutter 动画库,提供两种动画类型tween和physics-based。
Painting
该库包含Flutter引擎的绘制API,用于更专业的目的,例如绘制缩放图像,在阴影之间插值,在框周围绘制边框等。
Gestures
Gesture提供了手势识别相关的功能,包括触摸事件类定义和多种内置的手势识别器。
Engine
Flutter 引擎所有使用C++实现,提供Dart运行时和文字排版引擎(libtxt)和绘图引擎Skia。SKia是一个 2D的绘图引擎库,能够直接将数据经过OpenGL或者 Vulkan,传给GPU进行绘制。Chrome和 Android均采用 Skia做为绘图引擎。Skia提供了很是友好的 API,而且在图形转换、文字渲染、位图渲染方面都提供了友好、高效的表现。Skia是跨平台的,因此能够被嵌入到 Flutter的 iOS SDK中,而不用去研究 iOS闭源的 Core Graphics / Core Animation。