Flutter设计系统插件flutter_design的使用

Flutter设计系统插件flutter_design的使用


关于

flutter_design 包含帮助你构建设计系统的包,它提供了明确的框架和代码生成/命令行工具链。此外,它还包含一个强大的设计系统查看器,让你可以可视化和与你的设计系统进行交互。


示例

请查看通过示例代码生成的查看器应用:https://flutter-design-7b479.web.app/。以下是示例截图:

示例截图


主要依赖包

你主要需要依赖以下三个包:

  • 生产/设计包

    • flutter_design: 提供基本注解和框架,以便与设计生态系统集成。
    • flutter_design_codegen: 用于生成设计代码的代码生成器。
  • 设计查看器应用

    • flutter_design_viewer: 提供查看器用户界面和工具,以帮助你启动设计查看器应用。

功能

以下是项目的关键目标:

  • 创建设计系统并简化文档/可视化工作流程

    • 提供指南/类来构建系统
    • 提供代码生成器以减少样板代码
    • 提供命令行工具(待定)
  • 强大的设计查看器功能

    • 跨平台:在Web/桌面/移动设备上可视化
    • 完整的设计文档系统
    • 类书结构和完全集成的搜索(目前仅支持内存搜索,界面受Algolia启发)
    • 可视化UX在多个同步帧中(用户交互如滚动、点击、拖动将传播)跨:
      • 不同的设备帧
      • 不同的主题帧
      • 不同的语言环境帧
    • 运行时数据配置:你可以轻松地在运行时尝试不同的数据,例如颜色、值,甚至是小部件!还可以创建自己的数据生成器。

查看器的用户体验和设计灵感来源于 Wanda Design System


基本集成

首先,在你的代码库(你将在其中实现你的设计系统/小部件)中,你需要在 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  #...
  flutter_design:

dev_dependencies:
  #...
  build_runner:
  flutter_design_codegen:

请注意,你可能需要添加以下内容到 pubspec.yaml 文件(我正在努力修复这个问题以避免需要此覆盖):

dependency_overrides:
  analyzer: 3.2.0
  dart_style: 2.2.1

如果你看到类似以下错误:

class ToSourceIgnoringDesignAnnotationsVisitor implements AstVisitor {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../../../Dev/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-3.3.1/lib/dart/ast/ast.dart:405:6: Context: 'AstVisitor.visitConstructorSelector' is defined here.

那么你需要使用 @design 注解标记你想要集成到设计系统查看器中的小部件。是的,就是这么简单!

@design
class SpecialWidget extends StatelessWidget {
  //...
}

运行以下命令后,目录将被生成:

flutter packages pub run build_runner build --delete-conflicting-outputs

生成的目录包括:

  • lib/**/*.design.dart: 为部分文件生成的小部件组件页面。
  • lib/page_factory.design.dart: 包含可以传递给后续描述的 generatedComponentPages 的聚合。

最后,你可以创建一个 Flutter 设计师应用(目前支持 Android、iOS、Web、macOS 和 Windows)来托管设计系统查看器。为此,你需要在 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  #...
  your_package:
  flutter_design:
  flutter_design_viewer:

然后,你需要在应用中设置设计系统查看器,使用 generatedComponentPages 以及其他一些你可能需要配置的选项:

  • enabledLocales:你的设计系统支持的语言环境
  • enabledThemes:你的设计系统支持的主题

你还可以通过创建静态或动态内容来自定义页面。更多信息,请参阅文档。

setPathUrlStrategy(); // 推荐使用,以使 Web 中的历史浏览更好用
runApp(
  DesignSystemViewerApp(
    settings: ViewerSettings(
      enabledLocales: {
        'en-US': const Locale('en', 'US'),
      },
      enabledThemes: {
        'light': DesignTheme(materialTheme: ThemeData.light()),
        'dark': DesignTheme(materialTheme: ThemeData.dark()),
      },
    ),
    pageGroups: buildComponentPageTree(componentPages: generatedComponentPages),
  ),
);

更多关于Flutter设计系统插件flutter_design的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


flutter_design 是一个用于在 Flutter 应用中实现设计系统的插件。它提供了一套工具和组件,帮助开发者更容易地遵循设计规范,确保应用的一致性和可维护性。以下是如何使用 flutter_design 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_design 插件的依赖:

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

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

2. 导入包

在你的 Dart 文件中导入 flutter_design 包:

import 'package:flutter_design/flutter_design.dart';

3. 使用设计系统组件

flutter_design 提供了一系列的组件和工具,帮助你快速构建符合设计规范的 UI。以下是一些常见的用法示例:

3.1 使用颜色和字体

flutter_design 通常包含了一套预定义的颜色和字体,你可以在应用中使用它们:

Text(
  'Hello, Flutter Design!',
  style: TextStyle(
    color: DesignColors.primary,
    fontSize: DesignTypography.titleSize,
    fontWeight: FontWeight.bold,
  ),
);

3.2 使用按钮

flutter_design 提供了预定义的按钮样式,你可以直接使用:

DesignButton(
  onPressed: () {
    // 处理按钮点击
  },
  text: 'Click Me',
);

3.3 使用卡片

卡片是常见的 UI 元素,flutter_design 提供了预定义的卡片样式:

DesignCard(
  child: Text('This is a card'),
);

3.4 使用间距

flutter_design 通常定义了一套间距系统,帮助你在布局中保持一致性:

Padding(
  padding: const EdgeInsets.all(DesignSpacing.medium),
  child: Text('Spaced Text'),
);

4. 自定义设计系统

flutter_design 允许你自定义设计系统的各个方面,例如颜色、字体、间距等。你可以在应用的入口处进行配置:

void main() {
  DesignSystem.configure(
    colors: DesignColors(
      primary: Colors.blue,
      secondary: Colors.green,
    ),
    typography: DesignTypography(
      titleSize: 24.0,
      bodySize: 16.0,
    ),
    spacing: DesignSpacing(
      small: 8.0,
      medium: 16.0,
      large: 24.0,
    ),
  );

  runApp(MyApp());
}

5. 构建应用

通过使用 flutter_design 提供的组件和工具,你可以快速构建一个符合设计规范的 Flutter 应用。确保在整个应用中使用设计系统定义的样式和组件,以保持 UI 的一致性。

6. 其他功能

flutter_design 可能还提供了其他功能,如动画、图标、表单控件等。你可以查阅官方文档以了解更多详细信息。

7. 示例代码

以下是一个简单的示例,展示了如何使用 flutter_design 构建一个基本的 UI:

import 'package:flutter/material.dart';
import 'package:flutter_design/flutter_design.dart';

void main() {
  DesignSystem.configure(
    colors: DesignColors(
      primary: Colors.blue,
      secondary: Colors.green,
    ),
    typography: DesignTypography(
      titleSize: 24.0,
      bodySize: 16.0,
    ),
    spacing: DesignSpacing(
      small: 8.0,
      medium: 16.0,
      large: 24.0,
    ),
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Design Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(DesignSpacing.medium),
          child: Column(
            children: [
              Text(
                'Welcome to Flutter Design',
                style: TextStyle(
                  color: DesignColors.primary,
                  fontSize: DesignTypography.titleSize,
                ),
              ),
              SizedBox(height: DesignSpacing.large),
              DesignButton(
                onPressed: () {
                  // 处理按钮点击
                },
                text: 'Get Started',
              ),
              SizedBox(height: DesignSpacing.medium),
              DesignCard(
                child: Text('This is a card with some content.'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部