APP下载

Flutter 您需要知道的知识点 | FAQ・第四期_应用

消息来源:baojiabao.com 作者: 发布时间:2026-05-20

报价宝综合消息Flutter 您需要知道的知识点 | FAQ・第四期_应用

Flutter 是一套高效的跨平台免费开源 SDK,可以帮助开发者用一套程式码同时在 Android 和 iOS 上构建媲美原生体验的精良应用。今年的 I/O 开发者大会上我们将 Flutter 进一步升级到了 1.5 版本,我们从社群中也搜集到了不少开发者关注的问题,我们会用连载的形式由浅到深地为开发者们进行解答。如果您对 Flutter 已经有一定的了解,不妨在看到问题的时候先试着回答,然后和我们给出的答案进行比较,从而进一步加深理解。

下面开始 Flutter FAQ 第四期: 功能篇 (上)

问题 1:

Flutter 应用会拥有怎样的效能表现?

Flutter 应用会有很出色的效能。Flutter 设计的目标就是帮助开发者轻松实现 60 fps 的稳定帧率。Flutter 应用通过本地编译的程式码执行,不涉及解释过程。这也意味着 Flutter 应用启动会非常快捷。

问题 2:

开发 Flutter 时的操作周期有多长?修改程式码和看到界面内容更新之间会隔多久?

Flutter 使用的是热过载式的开发操作周期。您在实机或者模拟器上都能实现亚秒级的修改-更新速度。

另外,Flutter 的热过载是有状态的 (stateful),这意味着重新载入后 app 的状态会被保留。这样即使您修改的界面在应用很深的位置,过载后您也能直接看到修改后的该界面,而无需从应用首页开始重新操作。

问题 3:

热过载 (hot reload) 相比较热重启 (hot restart) 的区别在哪里?

热过载是通过将更改过的源代码档案注入到正在执行的 Dart VM 中来实现的。这不仅包括新增新的类,还包括在既存的类里新增方法和字段,以及修改既有的方法。不过有少数程式码修改是无法被热过载的:

问题 4:

我能把 Flutter 应用部署到哪里?

您可以将 Flutter 应用编译并部署到 iOS 和 Android 平台上。

问题 5:

Flutter 可以执行在哪些装置,哪些操作系统版本上?

移动操作系统: Android Jelly Bean, v16, 4.1.x 或更新版本,以及 iOS 8 或更高版本。

移动硬件: iOS 装置 (iPhone 4S 或更新版本) 和 ARM Android 装置。

请注意,Flutter 目前不支援直接为 x86 Android 进行构建 (参考问题 #9253),但是针对 ARMv7 或 ARM64 构建的应用都在很多 x86 Android 装置上表现良好 (通过模拟 ARM 来实现)。

我们支援使用 Android 和 iOS 装置以及这两种 OS 的模拟器来开发 Flutter 应用。

我们会在各种从低端到高阶的手机上进行测试,但我们还没有正式保证装置相容性。

我们认为,Flutter 会在平板电脑上执行良好。我们目前没有覆盖到全部的 Material Design 平板电脑适配规则,但我们正计划在这个领域进一步加大投入。

问题 6:

Flutter 能在 Web 上执行吗?

Flutter web 目前处于技术预览状态。我们将它做为 Flutter 专案的一个分支进行开发,这种做法有利于在确保高速迭代的同时保持 Flutter 核心专案的稳定。您可以将现有的 Flutter 程式码打包放在 web 预览版里使用,但由于我们还处于预览状态所以会有一些警告。

问题 7:

我能使用 Flutter 构建桌面应用吗?

可以,但目前支援得并不完美。我们正在致力于为桌面应用打造最佳体验。这方面的进展在我们的 wiki 上可以了解到。

问题 8:

我能在我现有的原生应用里使用 Flutter 吗?

可以,您可以在现有的 Android 或 iOS 应用中嵌入 Flutter 检视,但是我们的工具目前尚未针对这场景进行全面优化 (相关详情请参考问题 #14821)。

目前的两个演示是 platform_view和 flutter_view。我们的 wiki 页面中也提供了一些初始档案。

问题 9:

我能访问感测器、本地储存之类的平台服务和 API 吗?

可以。Flutter 预设即为开发者提供了操作系统中某些平台专属服务和 API 的操作入口。但是,我们希望避免大多数跨平台 API 的 “最小公约数” 问题,因此我们不打算为所有本地服务和 API 构建跨平台的操作 API。

很多平台服务和 API 都在 Pub 站点中提供了现成的程式码包,使用起来非常方便。

最后,我们鼓励开发者使用 Flutter 的异步讯息传递系统来创建出自己的平台与第三方 API 整合方案。开发者可以根据需要公开尽可能多 (或者尽可能少) 的平台 API,并构建最适合其专案的抽象层。

问题 10:

我能对自带的 widget 进行扩充套件和定制吗?

当然可以。Flutter widget 系统的设计思路就是让开发者可以轻松定制。

Flutter 没有让每个 widget 都提供大量引数,而是采用了组合的方式。较大的 widget 是用较小的 widget 组合构建出来的,您可以重复使用它们,并以新颖的方式对其加以组合,从而生成自定义的 widget。例如,RaisedButton 没有继承自一个通用按钮 widget,而是将 Material widget 与 GestureDetector widget 组合在一起。Material widget 负责视觉呈现,GestureDetector widget 则实现其互动。

如果您想要建立自定义设计的按钮,可以将负责视觉呈现的 widget 与提供互动的 GestureDetector 组合起来使用。例如,CupertinoButton 就采用了这种方法,将 GestureDetector 与其他几个负责表现视觉的 widget 进行组合。

这种组合策略使您可以最大限度地控制 widget 的视觉化和互动逻辑,同时重复利用大量程式码。在框架中,我们将复杂的 widget 分解为实现视觉、互动和动效的各部分。您可以按照自己喜欢的方式重新组合这些 widget,从而制作出自定义 widget 来完整传达出您的设计意图。

如果您在使用 Flutter 构建应用的时候有什么想法或疑问,欢迎在评论区给我们留言。我们期待着看到您为不同平台的使用者们打造出同样精美、高效的体验!

| 读原文 | 了解 Flutter 更多详细资讯

2019-12-28 03:48:00

相关文章