什么是声明式UI

  • 为什么是声明式UI?
  • 如何在声明性框架中更改UI?

Flutter采用了声明性UI布局方式, 学习什么是声明式UI, 以及它和我们常用的命令式UI的异同。

为什么是声明式UI?

从Win32到Web在到Android和iOS的框架通常使用命令式的UI编程风格。这可能是我们最熟悉的样式-你手动构建全功能UI实体(如UIView或等效实体),然后在UI更改时使用方法对其进行变更。

为了减轻开发人员在各种UI状态之间转换的编程负担, Flutter让开发人员描述当前的UI状态, 并切不需要关系它是如何过渡到框架。

虽然声明式UI能帮我们减轻很多负担,但大家要将布局的思维方式要转变过来。

如何在声明性框架中更改UI?

在声明式UI中, 视图配置(例如Flutter的widget)是不可变的, 并且只是轻量级的“蓝图”。要更改UI, Widget会在自身上触发重建(最常见的是通过在Flutter中的StatefulWidgets上调用set State())并构造一个新的Widget子树:

  return ViewB(
color:red,
child:ViewC(...),
)

使用​​RenderObjects​​​管理传统UI对象的许多职责(例如维护布局的状态)。​​RenderObjects​​​在帧之间保持不变, Flutter的轻量级Widgets告诉框架在状态之间改变​​RenderObjects​​​, 接下来
Flutter框架会处理其余部分。