mcpField
S
shadcn-ui-flutter

shadcn-ui-flutter

github.com/nank1ro设计与 UI2.8k686 次安装今天更新
代码仓库

关于 shadcn-ui-flutter

shadcn-ui-flutter 是面向 Flutter 开发者的 `shadcn_ui` 文档与示例技能,涵盖主题定制及各类界面组件。它提供组件指南和示例,帮助构建 Flutter 界面。

主要功能

  1. 01主题与配色定制指南
  2. 02涵盖表单和输入组件
  3. 03提供导航与布局组件
  4. 04包含日期与时间选择器
  5. 05提供组件使用示例

适用场景

  1. 01为 Flutter 应用设置明暗主题
  2. 02在界面中构建表单和输入控件
  3. 03为 Flutter 屏幕添加导航与布局组件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nank1ro/flutter-shadcn-ui --skill shadcn-ui-flutter

安装后在 Claude Code 中输入/shadcn-ui-flutter确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

components/
accordion.md
alert.md
avatar.md
badge.md
breadcrumb.md
button.md
calendar.md
card.md
checkbox.md
context-menu.md
date-picker.md
dialog.md
form.md
icon-button.md
input-otp.md
input.md
menubar.md
popover.md
progress.md
radio-group.md
resizable.md
select.md
separator.md
sheet.md
slider.md
sonner.md
switch.md
table.md
tabs.md
textarea.md

详细介绍

Flutter 版 Shadcn UI

此技能提供在 Flutter 中使用 shadcn_ui 包的文档和示例。

主题与自定义

Flutter 版 Shadcn UI 提供强大的主题系统。你可以使用内置配色方案(blue、gray、green、neutral、orange、red、rose、slate、stone、violet、yellow、zinc),也可以创建自己的配色方案。

应用主题

在 ShadApp 中使用 ShadThemeData 定义浅色和深色主题。

详细指南

组件

名称描述参考
Accordion一组垂直堆叠的交互式标题,每个标题都可以展开一个内容区块。accordion.md
Alert显示提醒用户注意的提示框。alert.md
Avatar带有占位符的图像元素,用于表示用户。avatar.md
Badge显示徽章或外观类似徽章的组件。badge.md
Breadcrumb使用链接层级显示当前资源的路径。breadcrumb.md
Button显示按钮或外观类似按钮的组件。button.md
Calendar用于输入和编辑日期的日期字段组件。calendar.md
Card显示包含页眉、内容和页脚的卡片。card.md
Checkbox允许用户在选中和未选中状态之间切换的控件。checkbox.md
Context Menu显示菜单,例如一组操作或功能,可通过鼠标右键单击触发。context-menu.md
Date Picker带有日期范围和预设选项的日期选择器组件。date-picker.md
Dialog会打断用户操作的模态对话框。dialog.md
Form构建带验证功能的表单,并便于访问表单字段的值。form.md
IconButton显示图标按钮或外观类似带图标按钮的组件。icon-button.md
Input显示表单输入字段或外观类似输入字段的组件。input.md
InputOTP支持复制和粘贴功能的无障碍一次性密码组件。input-otp.md
Menubar桌面应用中常见的常驻菜单,可快速访问一组固定命令。menubar.md
Popover由按钮触发,在门户中显示丰富内容。popover.md
Progress显示任务完成进度的指示器,通常呈进度条形式。progress.md
RadioGroup一组可勾选按钮(称为单选按钮),每次最多只能选中一个。radio-group.md
Resizable可调整大小的面板组和布局。resizable.md
Select由按钮触发,显示供用户选择的选项列表。select.md
Separator以视觉或语义方式分隔内容。separator.md
Sheet扩展 Dialog 组件,用于显示与屏幕主要内容相辅相成的内容。sheet.md
Slider用户可从给定范围内选择数值的输入控件。slider.md
Sonner一种主观设计风格的 Toast 组件。sonner.md
Switch允许用户在选中和未选中状态之间切换的控件。switch.md
Table响应式表格组件。table.md
Tabs一组分层内容区块(称为标签面板),每次显示一个。tabs.md
Textarea显示表单文本区域或外观类似文本区域的组件。textarea.md
Time Picker时间选择器组件。time-picker.md
Toast临时显示的简短消息。toast.md
Tooltip当元素获得键盘焦点或鼠标悬停其上时,显示与该元素相关信息的弹出框。tooltip.md

使用示例

每个组件页面底部都提供了示例。

基本设置

以下是一个使用 shadcn_ui 的完整计数器应用示例,包含对浅色和深色主题的支持。

import 'package:shadcn_ui/shadcn_ui.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ShadApp(
      debugShowCheckedModeBanner: false,
      theme: ShadThemeData(
        brightness: Brightness.light,
        colorScheme: const ShadZincColorScheme.light(),
      ),
      darkTheme: ShadThemeData(
        brightness: Brightness.dark,
        colorScheme: const ShadZincColorScheme.dark(),
      ),
      themeMode: ThemeMode.system,
      home: const CounterPage(),
    );
  }
}

class CounterPage extends StatefulWidget {
  const CounterPage({super.key});

  @override
  State<CounterPage> createState() => _CounterPageState();
}

class _CounterPageState extends State<CounterPage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    final theme = ShadTheme.of(context);
    return Scaffold(
      appBar: AppBar(title: const Text('Shadcn Counter')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'You have pushed the button this many times:',
              style: theme.textTheme.muted,
            ),
            Text(
              '$_counter',
              style: theme.textTheme.h1,
            ),
          ],
        ),
      ),
      floatingActionButton: ShadButton(
        onPressed: _incrementCounter,
        child: const Icon(LucideIcons.plus),
      ),
    );
  }
}

库中包含的包

Flutter Shadcn UI 由一些很棒的开源库组成,这些库会导出供你使用,无需将它们导入项目。

flutter_animate

flutter animate 库是一款非常出色的动画库,在 Shadcn UI 组件中得到了广泛使用。

使用 flutter_animate 可以轻松自定义动画效果,因为组件会接收一个 List<Effect>。

lucide_icons_flutter

一款用于 Shadcn UI 组件的优秀图标库。 你可以通过 LucideIcons 类使用 Lucide 图标,例如 LucideIcons.activity。

你可以在此处浏览所有图标。

two_dimensional_scrollables

一款优秀的原生表格(性能非常出色)实现,由 ShadTable 组件使用。

intl

intl 包提供国际化和本地化功能,包括消息翻译。

universal_image

支持多种图像格式,由 ShadAvatar 组件使用。

评论

支持 Markdown