双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

Flutter 写 UI 的方式 —— 声明式(十一)

篮球与鸡 篮球与鸡 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

Flutter 写 UI 的方式 —— 声明式

Flutter 采用了一种新的方式来写 UI,这种方式就是声明式,刚开始你可能会不适应,但用过之后你就会发现它非常好用。

Android 、iOS 的 UI 布局的写法

在讲如何写 Flutter UI 之前,首先我们回顾一下 Android 和 iOS 的是如何布局的:

  • Androoid:XML

    Android 中,通过 XML 来写布局。

  • Android:代码

    代码以 命令式 的方法来写布局

  • iOS:Storyboard

    使用 Storyboard 来组织视图和设置约束。

  • iOS:代码

    可以在 ViewController 中以 命令式 的编程方式设置约束。

在 Android 中通常使用 XML 来写 UI,XML 也是一种声明式,但使用 XML 写 UI,是不能在代码里直接操作 UI,还需要一步 findViewById 的步骤;在 iOS 中通常使用 命令式 的代码来写 UI ,命令式 可以直接在代码里操作 UI,但是要写复杂的界面的时候,就会很痛苦。

Flutter UI 布局的写法

Flutter 写 UI 布局:

  1. 只能用代码来写 UI
  2. 而且 Flutter 用代码写 UI 的方式是声明式的,和其他平台用代码来写 UI 的命令式不同。

为了看出 Flutter 声明式和其他平台命令式的不同,接下来举一个例子说明。

命令式 VS 声明式

假设要实现一个下面的界面:

使用命令式实现

如果用命令式的代码来实现,那么代码就会是这样子的():

// 分别实现各个view
ViewA a = new ViewA(...)
ViewB b = new ViewB(...)
ViewC c1 = new ViewC(...)
ViewC c2 = New ViewC(...)
// 然后将子view 添加到容器中
a.add(b)
b.add(c1)
b.add(c2)

你首先要通过 View 的构造函数创建 View 的实例,然后在组织 View 的层级。

使用声明式实现

用 Flutter 声明式 的代码实现就是这样的:

Widget build(BuildContext context) {
    return ViewA{
        child: ViewB{
            color: yellow,
            children: [
                ViewC(...),
                ViewC(...)
            ]
        }
    }
}

这种方式写 UI,有点类似于 Android 的 XML,声明了 UI 元素之间的关系和嵌套层次,但却是用代码实现的,所以少了 XML 解析的步骤,也使 Flutter UI 构建的效率更高。

Flutter 写 UI

在看之前创建的 Flutter 工程里,用来写 UI 的 代码:

Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: Scaffold(
          body: Center(
              child: GestureDetector(
                child: Text(widget.content),
                onTap: increment,
              )
          ),
        )
    );
  }

用代码来写 UI,同时也表现出了 UI 的层级:

img

...全文

相关推荐

给领导看的Flutter评估文档,如何说服领导用Flutter,Flutter优缺点、Flutter原理、Flutter框架结构等等

整理了,Flutter优缺点、Flutter原理、Flutter框架结构等等内容,内容来自于各个大神的博客,本人只是个搬运工。

天月将白

Chat_UI_Flutter:练习使聊天用户界面更加流畅

chat_ui_mhr 屏幕截图: 家庭聊天 聊天画面

张A裕

flukit:Flutter UI套件。一个Flutter UI组件库

|中文简体 Flukit flukit (Flutter UI Kit)是一个Flutter Widget库。 注意 本项目正在持续迭代中,欢迎大家贡献代码。 贡献代码须知 工程目录 flukit --lib //示例目录 --package_src --lib --src //widget库目录 --docs //文档目录,文档必须是markdown格式 --images //文档用到的图片都放在这里,如截图 --chs //中文文档目录 --en //英文文档目录 运行演示 flutter run 提交代码须知 如果您添加了一个,请遵循如下规则: 进一步多的添加注释,文档注释为三斜线“ ///” 添加一个新的窗口小部件,请在Demo目录添加使用示例,例如应该纯净无干扰,如果一个widget需要多个示例,可以

秦风明

Best-Flutter-UI-Templates:对所有人完全免费。 内置的Flutter Dart

Best-Flutter-UI-模板 对所有人完全免费。 其内置的Flutter Dart。 一些截图

苏咔咔

非常棒flutter项目,flutter漂亮UI,快速上手,flutter快速开发例子,非常就拿对flutter学习的demo

非常棒的一个开源flutter初学项目,内含完整UI设计图,距离真实项目只差更改名称

weijia3624
评论
收藏 已收藏
分享
返回顶部
篮球与鸡
小蜜蜂 4,953 成员 166 内容