com um clique
material-design-3
严格遵循Material Design 3配色规范的守护工具,提供Flutter应用界面配色最佳实践指南,确保UI一致性和可访问性
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
严格遵循Material Design 3配色规范的守护工具,提供Flutter应用界面配色最佳实践指南,确保UI一致性和可访问性
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
迁移小组件到事件携带数据模式,优化刷新性能。将数据直接放在事件中传递,小组件直接使用事件数据,避免重复的缓存访问操作。
确保小组件组件根据 HomeWidgetSize 正确调整各元素大小,包括容器、图标、字体、间距、线条粗细等
为插件主页添加带过滤器的列表小组件,使用 commonWidgetsProvider 支持多种公共组件样式,根据过滤条件选择使用多步骤 data selectors 或自定义表单
将插件中内置的dataRenderer(自定义UI)封装成标准的公共小组件,使其可被其他插件或功能复用。核心特性:(1)提取dataRenderer的UI逻辑创建独立组件文件,(2)在common_widgets.dart中注册新组件,(3)在_provideCommonWidgets中添加数据提供函数,(4)移除旧的内置渲染器代码
从 code_snippet 原型文件创建可预览的 Dart 小组件。自动分析 HTML 设计、生成 Flutter 组件、注册路由并添加到组件展示列表。
为Flutter插件添加可配置的选择器小组件(HomeWidget),支持用户点击配置、数据选择和动态数据渲染。核心特性:(1) 配置dataSelector保存必要数据,(2) 通过controller传递id获取最新数据,(3) 支持导航到详情页
| name | Material Design 3 配色规范守护者 |
| description | 严格遵循Material Design 3配色规范的守护工具,提供Flutter应用界面配色最佳实践指南,确保UI一致性和可访问性 |
// 主题配置(全局)
MaterialApp(
theme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.blue, // 主色调种子
brightness: Brightness.light, // 或 Brightness.dark
),
),
// ...
)
// ✅ 正确:使用系统定义的标准背景色
Scaffold(
backgroundColor: Theme.of(context).colorScheme.surface,
// ...
)
// ❌ 错误:硬编码颜色
// backgroundColor: Colors.white,
// ✅ 正确:使用容器专用背景色
Card(
color: Theme.of(context).colorScheme.surfaceContainerLow,
child: // ...
)
// 或使用 Container
Container(
color: Theme.of(context).colorScheme.surfaceContainer,
child: // ...
)
// ✅ 正确:自动适配的文字颜色
Text(
'标题文字',
style: Theme.of(context).textTheme.titleLarge?.copyWith(
color: Theme.of(context).colorScheme.onSurface,
),
)
// ✅ 正确:InputDecoration 自动使用 onSurface
TextField(
decoration: InputDecoration(
labelText: '用户名',
hintText: '请输入用户名',
// labelStyle/hintStyle 会自动使用 onSurface 的变体
),
)
// 主要按钮
ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Theme.of(context).colorScheme.primary,
foregroundColor: Theme.of(context).colorScheme.onPrimary,
),
onPressed: () {},
child: Text('主要操作'),
)
// 次要按钮
OutlinedButton(
style: OutlinedButton.styleFrom(
foregroundColor: Theme.of(context).colorScheme.primary,
),
onPressed: () {},
child: Text('次要操作'),
)
// 文本按钮
TextButton(
style: TextButton.styleFrom(
foregroundColor: Theme.of(context).colorScheme.primary,
),
onPressed: () {},
child: Text('文本按钮'),
)
// AppBar
AppBar(
backgroundColor: Theme.of(context).colorScheme.surface,
foregroundColor: Theme.of(context).colorScheme.onSurface,
// ...
)
// 底部导航
NavigationBar(
backgroundColor: Theme.of(context).colorScheme.surface,
indicatorColor: Theme.of(context).colorScheme.secondaryContainer,
// ...
)
TextField(
decoration: InputDecoration(
// 错误状态
errorText: '错误信息',
errorStyle: TextStyle(
color: Theme.of(context).colorScheme.error,
),
// 聚焦状态边框
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Theme.of(context).colorScheme.primary,
),
),
),
)
ListTile(
tileColor: Theme.of(context).colorScheme.surface,
textColor: Theme.of(context).colorScheme.onSurface,
iconColor: Theme.of(context).colorScheme.onSurfaceVariant,
// ...
)
| UI 元素 | 前景色 | 背景色 | 边框色 |
|---|---|---|---|
| 主要内容 | onSurface | surface | outline |
| 次要内容 | onSurfaceVariant | surfaceVariant | outlineVariant |
| 禁用内容 | onSurfaceDisabled | surfaceDisabled | - |
| 错误状态 | onError | error | errorContainer |
| 成功状态 | onPrimary | primary | primaryContainer |
| 警告状态 | onSecondary | secondary | secondaryContainer |
// 主题切换
MaterialApp(
theme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.blue,
brightness: Brightness.light,
),
),
darkTheme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.blue,
brightness: Brightness.dark,
),
),
// ...
)
// ❌ 错误:硬编码颜色
Container(color: Colors.white, ...)
// ❌ 错误:使用错误的颜色语义
Text('Hello', color: Colors.grey) // 应该使用 onSurface 或 onSurfaceVariant
// ❌ 错误:忽略主题
TextField(decoration: InputDecoration(fillColor: Colors.red))
// ✅ 正确:使用主题颜色
Container(color: Theme.of(context).colorScheme.surface)
Text('Hello', style: TextStyle(color: Theme.of(context).colorScheme.onSurface))
TextField(decoration: InputDecoration(fillColor: Theme.of(context).colorScheme.surface))