美文网首页Flutter从入门到进阶 实战携程网App
2. 【文档讲解】什么是声明式UI

2. 【文档讲解】什么是声明式UI

作者: 全栈小土堆堆堆 | 来源:发表于2019-04-10 17:32 被阅读0次

3-3 【文档讲解】什么是声明式UI

声明:Flutter专栏文档均来自慕课网
https://coding.imooc.com/class/321.html

什么是声明式UI

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

Flutter采用了声明性UI布局方式,为了帮助大家快熟上手,本节我们来学习什么是声明式UI,以及它和我们常用的命令式UI的异同。

为什么是声明式UI

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

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

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

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

下面是个简单的例子:

avatar

为了将上图左侧样式改变成右边样式,在命令式样式中,我们通常会获取到ViewB的实例,然后改变其颜色,然后将启动的元素移除,在添加ViewC c3:

// Imperative style
b.setColor(red)
b.clearChildren()
ViewC c3 = new ViewC(...)
b.add(c3)

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

// Declarative style
return ViewB(
    color: red, 
    child: ViewC(...),
)

这里,Flutter构建新的Widget实例,而不是在UI更改时改变旧实例b。 该框架使用RenderObjects管理传统UI对象的许多职责(例如维护布局的状态)。 RenderObjects在帧之间保持不变,Flutter的轻量级Widgets告诉框架在状态之间改变RenderObjects,接下来Flutter框架会处理其余部分。


相关文章

  • 2. 【文档讲解】什么是声明式UI

    3-3 【文档讲解】什么是声明式UI? 声明:Flutter专栏文档均来自慕课网https://coding.im...

  • Flutter入门知识—声明式UI

    重点: 1、Flutter采用了声明式UI的布局方式,什么是声明式UI? 2、声明式UI和命令式UI的异同? Fl...

  • 声明式 UI

    Flutter 采用了声明式 UI 布局方式。 为什么是声明式 UI 从 Win32 到 Web 再到 Andro...

  • 9. 【文档讲解】线程和异步UI

    3-15 【文档讲解】线程和异步UI 声明:Flutter专栏文档均来自慕课网https://coding.imo...

  • Flutter UI布局方式

    Flutter采用声明式UI布局方式 为什么是声明式UI 从win32到web再到Android和iOS的框架通常...

  • 3.3、Flutter:组件Widget

    一、概述 声明式UI 和 响应式UI Flutter的页面编写风格,属于声明式UI风格这与iOS的 UIKit响应...

  • 给移动开发者的声明式 UI 入门手册

    前言 我会用两篇文章来讲透声明式 UI,分别是《给移动开发者的声明式 UI 入门手册》,《UI 开发的革命,声明式...

  • 声明式UI

    命令式UI:构建全功能UI实体,然后在UI更改时使用方法对其进行变更。 声明式UI:描述当前的UI状态,并且不需要...

  • Jetpack Compose 核心概念(一)

    1. 命令式 UI 和声明式 UI 1.1 命令式 UI 在传统的 XML UI 系统中,创建一个 UI 的逻辑往...

  • 基于Kotlin DSL实现的声明式插件

    声明式编程 声明式编程是近年来越来越火的编程思想。万物互联的发展,驱动分布式UI前进。而声明式编程,恰恰式实现分布...

网友评论

    本文标题:2. 【文档讲解】什么是声明式UI

    本文链接:https://www.haomeiwen.com/subject/xeyoiqtx.html