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
更多关于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.'),
),
],
),
),
),
);
}
}