资料地址1:pan.baidu.com/s/1uWUe2y8U… 提取码: 17b3 资料地址2:share.weiyun.com/mDuF95rR 密码:c7r3ec
Flutter是基于前端诞生,同时基于它的诞生缘由,可以看到 Flutter本身就不会有特别多的语法糖,作为框架它比较“保守”,选择的 Dart 语言也是保守型的语言。而它的编程模式,语法都带有浓厚的前端色彩,可是它却最先运用在移动客户端的开发。
Flutter是一款备受赞誉的开源UI工具包,借助单一代码库,能够轻松构建移动、Web和桌面原生应用。这款工具由谷歌公司牵头开发,允许开发者创建出视觉效果惊艳、灵活设计、风格多样且运行流畅的应用程序。Flutter的核心编程语言是Dart,这是一种现代多范式语言,可针对多个平台生成原生代码。
Flutter具备的显著优势在于,它创造的高性能应用能呈现出流畅灵敏的用户界面。Flutter的架构和UI元素具有高度定制性与可扩展性,使得开发者可以轻松打造独具特色的应用。
在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。 通常,开发者可以通过 Flutter 框架层 与 Flutter 交互,该框架提供了以 Dart 语言编写的现代响应式框架。它包括由一系列层组成的一组丰富的平台,布局和基础库。从下层到上层,依次有: 基础的:foundational 类及一些基层之上的构建块服务,如 animation、 painting 和 gestures,它们可以提供上层常用的抽象。 渲染层:用于提供操作布局的抽象。有了渲染层,你可以构建一棵可渲染对象的树。在你动态更新这些对象时,渲染树也会自动根据你的变更来更新布局。 widget 层:是一种组合的抽象。每一个渲染层中的渲染对象,都在 widgets 层中有一个对应的类。此外,widgets 层让你可以自由组合你需要复用的各种类。响应式编程模型就在该层级中被引入。 Material 和 Cupertino 库提供了全面的 widgets 层的原语组合,这套组合分别实现了 Material 和 iOS 设计规范。
Flutter 框架相对较小,因为一些开发者可能会使用到的更高层级的功能已经被拆分到不同的软件包中,使用 Dart 和 Flutter 的核心库实现,其中包括平台插件,例如 camera 和 webview;与平台无关的功能,例如 characters、 http 和 animations。还有一些软件包来自于更为宽泛的生态系统中,例如 应用内支付、 Apple 认证 和 Lottie 动画。
该概览的其余部分将从 UI 开发的响应式范例开始,浏览各个构建层。而后,我们会讲述 widgets 如何被组织,并转换成应用程序的渲染对象。同时我们也会讲述 Flutter 如何在平台层面与其他代码进行交互,最终,我们会对目前 Flutter 对于 Web 平台的支持与其他平台的异同做一个总结。
Flutter原理 相比React Native和Weex,Flutter实现跨平台采用了更为彻底的方案(参考移动跨平台技术方案总结)。它既没有采用WebView也没有采用JavaScript,而是自己实现了一台UI框架,然后直接系统更底层渲染系统上画UI。所以它采用的开发语言不是JS,而Dart(Dart是面向对象的、类定义的、单继承的语言。它的语法类似C语言,可以转译为JavaScript,支持接口(interfaces)、混入(mixins)、抽象类(abstract classes)、具体化泛型(reified generics)、可选类型(optional typing)和sound type syste)。 据称Dart语言可以编译成原生代码,直接跟原生通信。
Flutter 和 React Native 底层框架对比 React-Native、Weex 核心是通过 Javascript 开发,执行时需要 Javascript 解释器,UI 是通过原生控件渲染。Flutter 与用于构建移动应用程序的其它大多数框架不同,因为 Flutter 既不使用 WebView,也不使用操作系统的原生控件。 相反,Flutter 使用自己的高性能渲染引擎来绘 制 widget。Flutter 使用 C、C ++、Dart 和 Skia(2D渲染引擎)构建。
flutter开发带来的感受 因为热加载可以实时刷新页面显示,所以开发页面非常的快速。 但是不是所有代码的调整都支持热加载,比如嵌套根App widget类的变更(这点和rn一样),比如资源的变更。 flutter没法使用反射,所以解析json类,显得格外繁琐。一般都是利用插件或者工具,自动生成解析代码。 flutter和rn一样解决了跨平台的问题。写一遍业务,可以应用到两端,减少了开发时间和测试压力。 但是我觉得rn对比flutter是有优势的。 两个方案实现的原理不一样, RN是利用虚拟dom,映射成native组件页面来实现跨平台。 flutter是dart引擎下,自己渲染所有的页面实现跨平台。