-
Flutter 和 ReactNative( RN ) 的异同?
编程
- RN 是使用JS代码调用系统的原生控件,最高支持 60fps。 Flutter 不使用系统的原生控件, Flutter 基于GPU渲染,因此确保了 高性能,最高支持120fps,甚至不输原生。
- Flutter只须要维护一套UI 代码:Flutter 在IOS和Android 是一套 UI 风格组件,因此 Flutter 须要作不多适配,由于上层只有一套UI代码。RN是同一套代码在IOS和Android显示不一样的风格,须要适配维护两个代码库。
- 相同点: 和RN相似,基于组件开发Widget,一切皆组件。
-
谁创造了Flutter?
Flutter是一个开源项目。目前,大部分的开发工做都是由Google的工程师完成的。如今愈来愈多的社区开发者加入。json
-
Flutter引擎有多大?
官方曾测量了一个最小的 Flutter 应用(不含 Material 组件,仅有一个 Center 控件,使用 flutter build apk 构建),并打包为 release 版本,大小约为 4.06 MB。该APP:核心引擎大约为 2.7MB(已压缩),框架和应用程序代码大约 820.6KB (已压缩),LICENSE 文件为 53.5KB(已压缩),必要的 Java 代码 (classes.dex) 为 61.8KB(已压缩),此外还有大约 450.4KB(已压缩)的 ICU 数据。
所以相对应用程序,Flutter的引擎并不大。架构
-
Flutter能够构建桌面应用程序吗?
能够,但目前专一于移动端优先。将来会支持 WIndows , Mac 和 Linux。并发
-
Flutter的标记语言在哪里?为何Flutter没有标记语法(相似于Android的XML布局文件)?
和Android原生开发不一样,使用代码动态构建的UI会更灵活:
1. 严格的标记系统难以表达和生成具备特定行为的widget。
2. “代码优先”更好地支持热重载和动态环境适应等功能。框架
-
能够在Flutter中使用JSON 吗?
必须能够,有关如何在Flutter中使用JSON的教程,请参阅 JSON教程。less
-
Flutter支持和原生混合开发么?能够在当前原生APP中嵌入Flutter么?
能够,目前能够在现有的Android或iOS应用中嵌入Flutter,可是当前可能不太完善。 这里是官方文档以供参考。异步
-
为何Flutter选择使用Dart语言?ide
- Dart运行时和编译器支持Flutter的混合编译:
- 基于JIT的快速开发周期:容许使用类型的语言进行形状更改和有状态的热重载
- 基于AOT编译器,可生成高效的ARM代码,能够快速启动并拥有可预测的生产部署性能。
- Dart由谷歌维护,Dart社区正在积极投入资源改进Dart在Flutter中的使用。
- Dart语言效率高,这点最重要!!!,这对framework团队和开发人员都很是重要。由于大部分Flutter功能都是用Dart实现,所以咱们须要在10万行代码时能保持高效的而不会牺牲framework和widget的可读性。
- Dart面向对象。绝大多数开发人员都具备面向对象开发的经验,所以更容易学习如何使用Flutter进行开发。
- Dart可预测,高性能。 Flutter框架使用函数式流,它很大程度上依赖于底层的内 存分配器,从而有效地处理小的、短时间的内存分配会很是重要,因此在缺 乏此功能的语言中Flutter没法有效地工做。
-
Flutter是什么语言编写的?
Flutter的不一样是由于它核心只有一层轻量的C/C++代码。Flutter在Dart中实现了其它大部分系统(组合、手势、动画、框架、widget等),开发人员能够轻松地进行读取、更改、替换或移除。这为开发人员提供了对系统的巨大可定制性。
知识点分享:flutter架构函数式编程
-
Flutter框架使用什么编程范式?
Flutter是一个多范式编程环境。 集合了过去十多年优秀的开发范式:函数
- 组合:Flutter使用的主要范例是使用小对象,而后将它们组合在一块儿以得到更复杂的对象。好比Widget之间的相互嵌套。
- 函数式编程:整个应用程序能够仅使用StatelessWidget来构建 ,这些函数本质上是描述参数如何映射到其余函数的函数。
- 事件驱动:用户交互由事件对象表示,这些事件对象被分派给注册了事件处理程序的回调。屏幕刷新也由相似的回调机制触发。
- 基于类的面向对象编程:框架的大部分API都是使用继承类来构建的。咱们使用一种方法来在基类中定义很是抽象的API,而后在子类中迭代地对它们进行定制化。
- 命令式编程:直接命令式编程一般与对象内部封装的状态配对,用于提供最直观的解决方案。
- 响应式编程:widget 和元素树有时被描述为响应式的,由于在 widget 的构造函数中提供的新输入会当即做为 widget 的构建方法对较低级别 widget 的更改传播,并在较低 widget 中进行更改(例如,做为响应到用户输入)经过事件处理程序传播回widget树。
- 泛型:泛型检测可用于帮助开发人员及早发现编程错误。Flutter框架使用泛型编程来处理这个问题。
- 并发:Flutter大量使用异步API。例如,动画系统经过Future来完成动画完成时的通知。图像加载系统一样使用Future在加载完成时进行报告。
- 约束:Flutter中的布局系统使用弱形式的约束编程来肯定布局的几何形状。约束(例如,父控件将大小约束传给子控件)知足这些限制。经过使用这种技术,Flutter能够更加精准的控制布局。