如果你是从命令式框架(例如 Android SDK 或 iOS UIKit)转用 Flutter,你需要以新的视角思考应用开发。

你可能拥有的许多假设并不适用于 Flutter。例如,在 Flutter 中,从头开始重建部分 UI 而不是修改它,是完全可以的。Flutter 足够快,即使在需要时每帧都这样做也行。

Flutter 是声明式的。这意味着 Flutter 会构建其用户界面以反映你应用的当前状态

A mathematical formula of UI = f(state). 'UI' is the layout on the screen. 'f' is your build methods. 'state' is the application state.

当你的应用状态发生变化时(例如,用户在设置屏幕中切换开关),你会改变状态,这会触发用户界面的重绘。没有直接命令式地改变 UI 本身(比如 widget.setText)——你改变状态,UI 会从头开始重建。

入门指南中了解更多关于 UI 编程的声明式方法。

UI 编程的声明式风格有许多优点。值得注意的是,对于 UI 的任何状态,都只有一条代码路径。你只需描述在任何给定状态下 UI 应该是什么样子,一次就够了。

起初,这种编程风格可能不如命令式风格那么直观。这就是本节存在的原因。请继续阅读。