Dart 是一种易于上手、可移植且性能强大的语言,专为全栈应用开发而设计。它提供健全的空安全、强大的类型系统,并编译为适用于移动设备、桌面设备和后端环境的本机机器代码,以及适用于 Web 的 JavaScript 或 WebAssembly。虽然 Dart 是 Flutter 的基础,但它也用于构建命令行工具、服务器和其他应用程序。
术语表
docs.flutter.dev 中使用的术语表参考。
以下是 Flutter 文档中使用的术语定义。
自适应
自适应设计关注的是 UI 在空间中的可用性,而响应式设计关注的是将 UI 适应到空间中。自适应应用会选择合适的布局(例如,使用底部导航栏而不是侧边栏)和输入设备(例如,鼠标与触摸屏),以在当前设备上提供自然的使用体验。
相关文档和资源
Cupertino
Flutter 的 cupertino 库实现了 iOS 设计语言,包含一组实现 Apple Human Interface Guidelines 的组件。
cupertino 库最初是 Flutter 主仓库的一部分,将会被解耦成一个独立的包。有关更多信息,请访问 flutter.dev/go/decouple-design。
声明式
声明式编程是一种风格,您描述 UI 的当前状态,框架负责将 UI 转换为匹配该状态。
在 Flutter 中,组件是不可变的“蓝图”。要更改 UI,组件会在自身上触发重建(通常通过调用 setState)并构建一个新的组件子树。这与命令式编程形成对比,在命令式编程中,您手动构建和修改 UI 实体。
相关文档和资源
嵌入器
Flutter 支持的每个原生平台都有一个嵌入器,用于处理特定于平台的逻辑。嵌入器是与底层操作系统协调的桥梁。它提供对输入、辅助功能、消息事件循环等服务的访问。嵌入器还会启动和管理 Flutter 引擎。
每个嵌入器都使用平台的原生语言编写:Android 使用 Java 和 Kotlin,iOS 和 macOS 使用 Swift 和 Objective-C,Windows 和 Linux 使用 C++。
每个嵌入器都允许插件包添加额外的特定于平台的应用程序功能。
嵌入器由运行应用启动和管理。
引擎
帧
热重载
热重启
main 或 initState。热重启仍然比完全重启更快,完全重启还会重新编译本机平台代码(例如 Swift)。在 Web 上,它还会重启 Dart Development Compiler (DDC)。
相关文档和资源
Impeller
Impeller 是 Flutter 的高性能渲染引擎,从头开始构建,专为 Flutter 的需求和现代图形 API 而设计。
其主要目标是在渲染时提供始终如一的流畅性能,并消除卡顿,特别是动画和交互期间由着色器编译引起的卡顿。
Impeller 通过在应用程序构建时预编译一组特定的较小着色器来实现这一点,而不是在运行时编译。
卡顿
当系统无法跟上预期的帧速率并丢帧时,会发生卡顿。卡顿是一个性能问题。Flutter 提供了信息和工具,例如 DevTools 中的性能工具,可以帮助您诊断和修复应用程序中的卡顿。
Material
Material Design 是一种自适应的指南、组件和工具系统,支持最佳的用户界面设计实践。Flutter 的 material 库实现了 Material Design 组件。
material 库最初是 Flutter 主仓库的一部分,将会被解耦成一个独立的包。有关更多信息,请访问 flutter.dev/go/decouple-design。
空安全
null 的变量而导致的错误。Dart 的空安全可防止因意外访问设置为 null 的变量而导致的错误。
通过 健全的空安全,变量默认情况下是非空,这意味着只能在显式声明它们可为空时,才能为其分配 null 值。这与其他“混合”空安全实现不同,在这些实现中,非空变量仍然可以在运行时包含 null。使用 Dart 的健全空安全,编译器保证非空变量永远不会为 null。
相关文档和资源
属性钻取
通过构造函数参数将数据传递到多个组件层面的过程,通常是为了到达更深的后代。这种模式可能会变得冗长,这就是为什么通常使用其他状态管理解决方案(例如 InheritedWidget 或 Provider)的原因。
相关文档和资源
pub
Pub 是用于管理 Dart 包的工具。它允许您安装、升级和管理 Dart 应用的依赖项。依赖项在 pubspec.yaml 文件中定义。包托管在 pub.dev,官方包仓库。
相关文档和资源
Sliver
Sliver 是可滚动区域的一部分,您可以定义其行为方式。可以将 Sliver 视为构建块,可以在 CustomScrollView 内组合在一起,以创建自定义滚动体验,例如弹性滚动或折叠标题。Sliver 是延迟构建的,这意味着 Flutter 只渲染屏幕上可见的 Sliver,使其对于长内容列表非常高效。
视口
视口是滚动机制的可视组件。它根据当前的滚动偏移量显示其子项(通常是 sliver)的子集。它通常被描述为“内部更大”,因为它可能包含比屏幕上可见内容更多的内容。
相关文档和资源
小部件
用户界面的部分的不变描述。
在 Flutter 中,几乎所有东西都是一个 widget(小部件)。Widget 是您使用 Flutter 创建应用程序 UI 的基本构建块。每个 widget 都是基于其当前配置和状态,UI 应该是什么样子的不可变声明。
Widget 以层次结构组合在一起,形成 widget 树。当 widget 的状态发生变化时,Flutter 框架会重建树的必要部分以更新 UI。
两种主要的 widget 类型是 StatelessWidget,它没有可变状态,以及 StatefulWidget,它具有可以更新的持久 state(状态)。
除非另有说明,此网站上的文档反映了 Flutter 3.38.6。报告问题。