Files
monisuo/SHADCN_INTEGRATION.md

267 lines
4.4 KiB
Markdown
Raw Normal View History

2026-03-22 02:14:55 +08:00
# Shadcn UI for Flutter - 集成完成
## ✅ 已完成
### 1. 技能文档创建
已创建完整的 shadcn_ui Flutter 技能文档,位于:
```
~/.agents/skills/shadcn-ui-flutter/SKILL.md
```
以后 LLM 可以通过这个技能文档了解如何使用 shadcn_ui。
### 2. 项目集成
已将 shadcn_ui 集成到 monisuo 项目:
- 更新 `pubspec.yaml` 添加 shadcn_ui 依赖
- 更新 `main.dart` 使用 ShadApp
- 创建 shadcn 风格的登录页面示例
---
## 📦 依赖
```yaml
dependencies:
shadcn_ui: ^0.2.4
flutter_localizations: sdk: flutter
```
---
## 🚀 使用方式
### 1. 安装依赖
```bash
cd ~/Desktop/projects/monisuo/flutter_monisuo
flutter pub get
```
### 2. 导入组件
```dart
import 'package:shadcn_ui/shadcn_ui.dart';
```
### 3. 使用组件
```dart
// 按钮
ShadButton(child: Text('Primary'), onPressed: () {})
ShadButton.secondary(child: Text('Secondary'))
ShadButton.destructive(child: Text('Delete'))
// 输入框
ShadInputFormField(
id: 'email',
label: Text('Email'),
placeholder: Text('Enter email'),
)
// 卡片
ShadCard(
title: Text('Card Title'),
description: Text('Card description'),
child: Text('Content'),
)
// 对话框
showShadDialog(
context: context,
builder: (context) => ShadDialog(
title: Text('Dialog'),
actions: [
ShadButton(child: Text('OK')),
],
),
)
```
---
## 🎨 主题
### 深色主题(默认)
```dart
ShadApp(
themeMode: ThemeMode.dark,
darkTheme: ShadThemeData(
brightness: Brightness.dark,
colorScheme: const ShadSlateColorScheme.dark(),
),
)
```
### 可用颜色方案
- `blue` - 蓝色
- `slate` - 石板色(推荐深色模式)
- `zinc` - 锌色(推荐浅色模式)
- `green` - 绿色
- `red` - 红色
- `violet` - 紫色
- 等等...
### 切换主题
```dart
final colorScheme = ShadColorScheme.fromName('slate', brightness: Brightness.dark);
```
---
## 📝 迁移现有代码
### Material Button → Shadcn Button
```dart
// Before
ElevatedButton(
child: Text('Submit'),
onPressed: () {},
)
// After
ShadButton(
child: Text('Submit'),
onPressed: () {},
)
```
### Material TextField → Shadcn Input
```dart
// Before
TextField(
decoration: InputDecoration(
labelText: 'Email',
),
)
// After
ShadInputFormField(
id: 'email',
label: Text('Email'),
placeholder: Text('Enter email'),
)
```
### Material Card → Shadcn Card
```dart
// Before
Card(
child: Text('Content'),
)
// After
ShadCard(
title: Text('Title'),
description: Text('Description'),
child: Text('Content'),
)
```
---
## 🎯 核心组件
### Button按钮
- `ShadButton` - 主要按钮
- `ShadButton.secondary` - 次要按钮
- `ShadButton.destructive` - 危险按钮
- `ShadButton.outline` - 边框按钮
- `ShadButton.ghost` - 幽灵按钮
- `ShadButton.link` - 链接按钮
### Input输入框
- `ShadInput` - 基础输入框
- `ShadInputFormField` - 表单输入框
### Card卡片
- `ShadCard` - 卡片组件
### Dialog对话框
- `ShadDialog` - 对话框
- `ShadDialog.alert` - 警告对话框
### Form表单
- `ShadForm` - 表单容器
- `ShadCheckboxFormField` - 复选框
- `ShadSwitchFormField` - 开关
- `ShadSelectFormField` - 选择器
- `ShadDatePickerFormField` - 日期选择器
### 其他组件
- `ShadAlert` - 警告
- `ShadBadge` - 徽章
- `ShadAvatar` - 头像
- `ShadCalendar` - 日历
- `ShadAccordion` - 手风琴
- `ShadBreadcrumb` - 面包屑
- `ShadSelect` - 选择器
- `ShadCheckbox` - 复选框
- `ShadSwitch` - 开关
- `ShadIconButton` - 图标按钮
---
## 🎬 动画
所有组件都支持 `flutter_animate`
```dart
ShadButton(
child: Text('Animated'),
).animate().fadeIn().slideX()
```
---
## 📚 图标
使用 Lucide Icons
```dart
Icon(LucideIcons.home)
Icon(LucideIcons.settings)
Icon(LucideIcons.user)
```
浏览图标https://lucide.dev/icons/
---
## 📖 完整文档
查看技能文档获取完整信息:
```
~/.agents/skills/shadcn-ui-flutter/SKILL.md
```
---
## 🚨 注意事项
1. **必须使用 ShadApp**:不要直接使用 MaterialApp
2. **主题访问**:使用 `ShadTheme.of(context)`
3. **图标**:使用 `LucideIcons` 而不是 Material Icons
4. **表单**:推荐使用 ShadForm 配合 FormField 组件
---
## 🔧 下一步
1. 运行 `flutter pub get` 安装依赖
2. 替换现有 Material 组件为 Shadcn 组件
3. 测试所有页面功能
4. 根据需要定制主题
---
**状态**: ✅ 技能创建完成,项目已集成
**版本**: shadcn_ui 0.2.4