Flutter 问题集


收录Flutter坑中的问题和解决办法

Flutter使用什么技术?
Flutter使用C C ++ Dart和Skia 2D渲染引擎 构建

Flutter如何在Android上运行 代码?
引擎的C/C ++代码是用Android的NDK编译的 任何Dart代码都是AOT编译成本地代码的
Flutter应用程序使用本机指令集运行 不涉及解释器

Flutter如何在iOS上运行 代码?
引擎的C/C ++代码使用LLVM编译 任何Dart代码都是AOT编译为本地代码的
Flutter应用程序使用本机指令集运行 不涉及解释器

Flutter使用系统原生控件 widget 吗?
Flutter提供了一组自己的widget 包括Material Design和Cupertino iOS风格的widget
由Flutter的framework和引擎管理和渲染

可以使用哪些操作系统来构建Flutter应用程序?
Flutter支持Linux Mac和Windows上的开发

为什么Flutter选择使用Dart语言?
Flutter在四个主要维度进行了评估 并考虑了框架作者 开发人员和最终用户的需求等因素
发现不同的语言在不同的层面符合一部分需求 但Dart在所有评估维度上得分都很高 并且符合 的所有要求和标准
Dart运行时和编译器支持Flutter的两个关键特性的组合:基于JIT的快速开发周期:允许使用类型的语言进行形状更改和有状态的热重载;以及AOT编译器 可生成高效的ARM代码 可以快速启动并拥有可预测的生产部署性能

Dart在以下主要标准上得到高分:
开发人员的效率
Flutter的主要价值主张之一是通过让开发人员使用相同的代码库为iOS和Android创建应用程序 从而节省了工程资源
使用高效的语言可以进一步加速开发周期 并使Flutter更具吸引力这对 的framework团队和开发人员都非常重要
大部分Flutter功能都是用Dart实现 因此 需要在10万行代码时能保持高效的而不会牺牲framework和widget的可读性

面向对象
虽然 可以使用非面向对象的语言 但这意味着要重新解决几个难题
另外 绝大多数开发人员都具有面向对象开发的经验 因此更容易学习如何使用Flutter进行开发

可预测 高性能
借助Flutter  希望使开发人员能够快速创建流畅的用户体验
为了实现这一点  需要能够在每个动画帧中运行大量的代码
这意味着 需要一种既能提供高性能又能提供可预测性能的语言 而不会出现会导致丢帧的周期性暂停

快速内存分配
Flutter框架使用函数式流 依赖于底层的内存分配器 从而有效地处理小的 短期的内存分配会非常重要 所以在缺乏此功能的语言中Flutter无法有效地工作

Flutter引擎有多大?
最小的 Flutter 应用 不含 Material 组件 仅有一个 Center 控件 使用 flutter build apk 构建 的下载大小 并打包为 release 版本 大小约为 4.06 MB.

功能
Flutter应用程序性能如何?
Flutter应用程序性能非常出色
Flutter旨在帮助开发人员轻松实现恒定的60fps
Flutter应用程序通过本机编译的代码运行 - 不涉及解释器
这意味着Flutter应用程序可以快速启动并执行
Flutter开发体验如何?编辑和刷新之间有多长时间?
Flutter实现了热重载开发循环
您可以在设备或模拟器上实现亚秒级重载
Flutter的热重载是有状态的 这意味着应用程序状态在重载后仍然会保留
所以您可以在应用程序中各个页面快速迭代开发 而无需在每次重新加载后都要从主屏幕重新开始
热重载 与 完全重新启动 有何不同?
Hot Reload通过将更新的源代码文件注入正在运行的Dart VM 虚拟机 中工作
这不仅包括添加新类 还包括向现有类添加方法和字段 以及更改现有函数
尽管有几种类型的代码更改无法热重新:
全局变量初始化器
静态字段初始化程序




Flutter 问题集和Flutter-Error相关