Flutter UI定制插件flutterui_modifiers的使用

Flutter UI定制插件flutterui_modifiers的使用

FlutterUI Modifiers 是一组声明式的 widget 修改器,旨在使你的 Flutter 代码更简洁且线性。现代工具如 Jetpack Compose 和 SwiftUI 使用视图修改器来简化代码的编写和理解。

此包提供了两者的优势:Flutter 的平台独立性和 SwiftUI 的清晰修改器语法。

安装

pubspec.yaml 文件中添加 flutterui_modifiers 作为依赖项:

dependencies:
  flutterui_modifiers:

为什么使用修改器?

我们知道 Flutter 是一个强大的应用程序构建框架。但是,由于嵌套的 widget,Flutter 代码可能会变得难以阅读。

工具如 Google 的 Jetpack Compose 和 Apple 的 SwiftUI 接受了修改器的概念。

修改器的功能与 Flutter widget 相同。区别在于,Flutter 代码是嵌套的,而修改器是线性的。

这使得代码更容易一目了然!🎉

示例

使用 FlutterUI Modifiers,可以这样写:

List<Widget> list = [];

Text('Hello, World!') //
    .bold()
    .font(size: 22)
    .help('我们爱你 🌍')
    .padding(all: 16)
    .centered()
    .assign(list);

而不是这样:

List<Widget> list = [];

list.add(
  Center(
    child: Padding(
      padding: EdgeInsets.all(16.0),
      child: Tooltip(
        message: '我们爱你 🌍',
        child: Text(
          'Hello, World!',
          style: TextStyle(
            fontWeight: FontWeight.bold,
            fontSize: 22,
          ), // TextStyle
        ), // Text
      ), // Tooltip
    ) // Padding
  ), // Center
);

修改器列表

所有视图修改器都包含内联文档和示例。

请注意,一些视图修改器仅适用于特定的 widget,如 <code>Text()</code> 或各种按钮,并且不适用于其他不支持这些功能的 widget。

状态 修改器 Widget(s)
🟢 .align() *
🟢 .aspectRatio() *
🟢 .assign() *
🟢 .centered() *
🔴 .controlSize() Button, TextField
🟠 .background() *
🟡 .backgroundColor() *
🟢 .bold() Text
🟠 .border() *
🟡 .clipOval() *
🟡 .clipPath() *
🟡 .clipRect() *
🟠 .clip() *
🟢 .color() Text
🟢 .corner() *
🟢 .direction() Icon, Text
🟢 .disabled() Button
🟡 .flex() *
🟢 .font() Icon, Text
🟢 .frame() *
🟢 .help() *
🟡 .hideThumb() ListView
🟢 .margin() *
🟢 .multilineTextAlignment() Text
🟢 .offset() *
🟠 .onDrag() *
🟠 .onDrop() *
🟠 .onDoubleTap() *
🟢 .onHover() *
🟡 .onLongTap() Button
🟢 .onTap() *
🟢 .opacity() *
🟠 .overlay() *
🟢 .padding() *
🔴 .popover() *
🟢 .rotate() *
🟡 .scale() *
🟢 .semantic() Icon
🟢 .shadow() *
🔴 .sheet() *
🟡 .style() Text, TextField
🟡 .transform() *

图例

状态 描述
🟢 已实现
🟡 已实现,但可能更改
🟠 开发中
🔴 尚未实现
* 所有类型可用

技术说明

视图修改器通过告诉 widget 包装在另一个 widget 中并返回自身来工作。

修改器链

修改器链是一系列在视图上的修改器。

类型传递

类型传递是一种技术,如果后续的修改器属于相同的类,则不会将它们嵌套在一起。

例如,如果修改器链看起来像这样:

[ Center > Container > Container > Container > Text > Text ]

FlutterUI 将渲染视图层次结构如下:

[ Center > Container > Text ]

这确保了视图层次结构不会比必要的更复杂。

示例代码

安装 flutterui_modifiers 包后,你可以将以下代码转换为修改器风格的等效代码:

List<Widget> list = [];

list.add(
  Center(
    child: Padding(
      padding: EdgeInsets.all(16.0),
      child: Text(
        'Hello, World! 🌍',
        style: TextStyle(
          color: Colors.red,
          fontSize: 22,
        ), // TextStyle
      ), // Text
    ) // Padding
  ), // Center
);

转换为:

List<Widget> list = [];

Text('Hello, World! 🌍')
    .font(size: 22)
    .color(Colors.red)
    .padding(all: 16)
    .centered()
    .assign(list);

更多关于Flutter UI定制插件flutterui_modifiers的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter UI定制插件flutterui_modifiers的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutterui_modifiers 是一个用于简化 Flutter UI 开发过程的插件,它提供了许多常用的 UI 修饰符,帮助你更快地构建和定制 UI 组件。通过使用这些修饰符,你可以减少样板代码,提高开发效率。

以下是使用 flutterui_modifiers 插件的基本步骤和示例:

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 flutterui_modifiers 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutterui_modifiers: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入包

在你的 Dart 文件中导入 flutterui_modifiers

import 'package:flutterui_modifiers/flutterui_modifiers.dart';

3. 使用修饰符

flutterui_modifiers 提供了许多修饰符来简化常见的 UI 操作。以下是一些常用的修饰符示例:

3.1. Padding 修饰符

Text('Hello, World!')
    .padding(all: 16.0);  // 给文本添加 16.0 的内边距

3.2. Margin 修饰符

Text('Hello, World!')
    .margin(all: 16.0);  // 给文本添加 16.0 的外边距

3.3. BackgroundColor 修饰符

Text('Hello, World!')
    .backgroundColor(Colors.blue);  // 设置文本背景颜色为蓝色

3.4. CornerRadius 修饰符

Container()
    .backgroundColor(Colors.blue)
    .cornerRadius(10.0);  // 设置容器的圆角半径为 10.0

3.5. Shadow 修饰符

Text('Hello, World!')
    .shadow(color: Colors.black, blurRadius: 5.0);  // 添加阴影效果

3.6. TextStyle 修饰符

Text('Hello, World!')
    .textStyle(fontSize: 20.0, fontWeight: FontWeight.bold);  // 设置文本样式

3.7. WidthHeight 修饰符

Container()
    .width(100.0)
    .height(50.0);  // 设置容器的宽度和高度

3.8. Center 修饰符

Text('Hello, World!')
    .center();  // 将文本居中

3.9. Align 修饰符

Text('Hello, World!')
    .align(Alignment.bottomRight);  // 将文本对齐到右下角

3.10. Expanded 修饰符

Text('Hello, World!')
    .expanded();  // 使文本填满可用空间

4. 组合使用修饰符

你可以将多个修饰符组合使用,以构建更复杂的 UI:

Text('Hello, World!')
    .padding(all: 16.0)
    .backgroundColor(Colors.blue)
    .cornerRadius(10.0)
    .shadow(color: Colors.black, blurRadius: 5.0)
    .textStyle(fontSize: 20.0, fontWeight: FontWeight.bold)
    .center();
回到顶部