Flutter介绍——FAQ

什么是Flutter?

——Flutter是移动端开发SDK,包括框架,控件和工具等,能开发出漂亮的移动端APP,且同时支持Android和iOS。

 

我能使用Flutter开发什么样的APP?

——Flutter为运行在Android和iOS的2D APP而优化。Flutter开发的APP既适用于简单场景,比如传递品牌价值,也适用于复杂场景,比如股票交易平台。你可以用Flutter开发出各种有特点的APP,比如相机,地理定位,网络,存储和第三方SDK等待。

 

Flutter的特别之处在哪里?

——Flutter既不使用WebView,也不使用系统的原生控件,而是通过高性能的渲染引擎来画控件。除此之外,Flutter不同是因为它只有C/C++代码编写的单一层,这样开发者更容易控制系统,或者说更容易读取或者修改系统的组件,手势,动画框架和控件等等。

 

Flutter SDK包括哪些东西?

——深度优化,手机优先的2D渲染引擎以及对文本的极佳支持。

——Rx(响应式编程)框架

——针对Android和iOS丰富的控件集合

——提供单元和集成测试API

——提供连接系统和第三方SDK的API

——使用命令行来create, build,test 和 compile APP

 

Flutter工作是否需要编辑器或者IDE?

——在IntelliJ IDEA(同时支持Ultimate和Community版本)里面安装Flutter插件即可工作。或者你可以结合flutter命令行和支持编辑Dart的编辑器。

 

Flutter是否包含框架?

——有响应式编程框架,灵感来源于React框架。不过该框架是可选的,开发者可以选择使用该框架的一部分或者换一个其他框架。

 

Flutter包含依赖注入(dependency injection)框架吗?

——暂时没有

 

Flutter用什么技术构建的?

——C, C++, Dart, and Skia (2D 渲染引擎)

 

Flutter如何将代码运行在Android?

——引擎的C/C++代码使用Android的NDK编译的,并且框架的大部分和APP代码作为本地代码(由Dart编译器编译的)运行的。

 

Flutter如何将代码运行在iOS?

——引擎的C/C++代码使用LLVM编译,并且任何Dart代码都是AOT编译成本地代码。

 

Flutter使用了我的系统的原生(OEM)控件吗?

——没有,Flutter提供了一系列的MD风格和Cuperitno(iOS风格)风格的控件,假如我们复用OEM控件,那么FLutter APP的性能会被这些控件质量所限制。

 

FLutter支持哪些操作系统?

——支持Linux, Mac和Windows。

 

开发FLutter使用什么语言?

——使用Dart语言,其底层图表框架和Dart虚拟机用C/C++实现。

 

为什么FLutter选择使用Dart?

——提高开发效率:一套代码运行在iOS和Android,极大地加速开发。

——面向对象:FLutter需要创建可视的用户体验,所以被选择的语言应该是面向对象编程,并且在构建UI框架上经验丰富。如果选择非面向对象语言就是重复造轮子。

——可以预见的,高性能的:FLutter旨在让开发者开发更迅速,让用户体验更流畅。为了实现该目标,需要每个动画帧能够运行大量的代码,也意味着被选择的语言能同时传递高性能和传递可预见的性能,而不是由于周期性停顿而引起丢帧。

——快速分配内存:FLutter框架使用了Rx响应式编程,它依赖于底层内存分配器(处理小而短的内存分配),所以被选择的语言需要有该特性。

Dart语言满足这四个条件,除此之外,我们还有机会与Dart社区一起近距离工作(不断完善Dart以便在Flutter中更好的使用)。

 

Flutter引擎有多大?

——2017年5月,我们测量了Flutter APP的最小尺寸(没有MD风格,仅仅是Center控件),release版apk接近6.7M。在这个最小apk中,核心引擎大约3.3M,框架和APP代码约1.25M,LICENSE文件(在app.flx中)约55k,必须的Java代码(classes.dex)是40k,还有2.1M的ICU数据。你也可以自己测量你的APP大小,执行flutter build apk 并查看 app/outputs/apk/app-release.apk。

 

Flutter APP性能究竟如何?

——性能很优秀,Flutter是为60fps而设计的,Flutter运行的是编译后的代码,而不是解释性程序,这意味着Flutter能快速启动。

 

IDE下载程序到手机需要多长时间?

——Flutter有热加载(hot reload)功能,亚秒级加载时间。热加载功能是状态保持的(stateful),也就是说热加载后APP状态是保留的,这意味着你可以快速重复屏幕内容而不需要从主屏幕开始加载。

 

热加载与完全重启哪里不同?

热加载是注入源代码到运行中的Dart虚拟机,包括增加新的类,和给已有类增加新的方法和变量以及修改已有方法。下面几种情况热加载无效:

——全局变量初始化

——静态变量初始化

——修改main()方法

 

Flutter APP支持的设备和操作系统版本?

——支持的手机操作系统:Android Jelly Bean, v16, 4.1.x or newer, and iOS 8 or newer

——手机硬件:64-bit iOS 手机(从iPhone 5S开始), and ARM Android 手机。

——支持Android 和iOS物理设备,支持Android和iOS模拟器,不支持平板。

 

Flutter能在web上运行吗?

——不支持

 

Flutter支持开发桌面APP?

——手机开发优先,鼓励以其他的方式使用开源的Flutter。

 

控件能够继承和自定义吗?

——可以,Flutter的控件系统被设计为很容易自定义。Flutter并没有为每一个控件提供很多参数,而是提供创作。比如说,RaisedButton 控件并不是普通button控件的子类,而是Material 控件和GestureDetector控件的组合,前者提供视觉设计,后者提供交互设计。如果你想创建一个自定义视觉设计的button控件,可以与实现了你的视觉设计的GestureDetector控件相结合,比如说CupertinoButton控件。视觉设计与交互设计的结合创作赋予开发者最大的控制权,并且还能复用大量代码。我们已经将复杂的控件分解为多个独立的控件(分别实现视觉,交互和手势),你可以任意组合。

 

能与手机平台默认编程语言交互吗?

——可以,能与开发Android的Java代码和开发iOS的 Objective-C或Swift交互,Flutter APP与手机平台通过BasicMessageChannel传递消息。

 

Flutter开发中并行和并发问题?

——Flutter支持虚拟机的堆隔离,所以支持并行,隔离后通过异步消息通信。

——暂不支持共享内存并发解决方案。

 

Flutter能使用JSON/XML/protobuffers等吗?

——可以,https://pub.dartlang.org上面有相关库。

 

Flutter能开发3D (OpenGL) APP?

——暂不支持

 

苹果公司会拒绝Flutter APP?

——目前是允许的,虽然苹果公司的政策每年都会变化,但我们会尽全力保证Flutter APP能发布到苹果公司的App Store。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值