Skip to content

dapeng17951/shadcn_flutter_admin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shadcn Flutter Admin

一个基于 Flutter 与 shadcn_ui 组件库的管理后台示例项目。

项目结构

项目采用 feature-friendly 分层,并在 lib/app 下进行归档:

lib/
  app/
    common/                // 通用能力与配置
      langs/               // 国际化资源与服务
        en_US.dart
        zh_Hans.dart
        translation_service.dart
      auth_service.dart
      my_config.dart
      my_constants.dart
      index.dart           // Barrel 导出
    core/                  // 全局能力与主题
      theme/
        index.dart
      global.dart
      index.dart           // Barrel 导出
    data/                  // 数据模型
      user_info.dart
    modules/               // 模块(页面/逻辑/绑定)
      dashboard/
        binding.dart
        logic.dart
        page.dart
        view.dart
      login/
        binding.dart
        logic.dart
        page.dart
        view.dart
    res/                   // 资源(主题数据等)
      shadcn_theme_data.dart
    routes/                // 路由定义与集中出口
      app_pages.dart
      app_routes.dart
      index.dart
    shared/                // 共享 UI(布局/组件/页面片段)
      layout/
        components/
          admin_header.dart
          admin_sidebar.dart
          theme_toggle_button.dart
        controllers/
          customize_controller.dart
          layout_controller.dart
        shell/
          admin_layout.dart
        user/
          sidebar_user_info.dart
        components.dart
        controllers.dart
        index.dart
      pages/
        errors/
          unauthorized_view.dart
          forbidden_view.dart
          not_found_view.dart
          internal_server_error_view.dart
          service_unavailable_view.dart
          index.dart
      widgets/
        dashboard/
          recent_sales.dart
          stat_card.dart
          index.dart
        error/
          custom_error_logic.dart
          custom_error_state.dart
          custom_error_view.dart
        index.dart
      index.dart           // Barrel 导出
  main.dart

目录职责

  • common:跨模块通用能力与配置,含国际化服务与常量
  • core:全局初始化、主题与全局状态
  • data:纯数据模型定义
  • modules:按照功能模块组织的页面/逻辑/绑定
  • res:静态资源与主题数据
  • routes:集中管理路由表与路径常量
  • shared:共享 UI(布局、通用组件、错误页等)

代码约定

  • 文件命名:lower_case_with_underscores
  • 类命名:UpperCamelCase
  • 常量命名:lowerCamelCase(例如 storageUserProfileKey)
  • 国际化:TranslationService 使用 'en_US' 与 'zh_Hans' 作为语言键
  • 导出:每个一级目录提供 index.dart 作为 Barrel 出口,减少长路径导入

开发与验证

  • 代码静态检查:flutter analyze
  • 运行:flutter run -d chrome 或选择本地平台设备

快速开始

  1. 安装依赖:
    • Flutter SDK(3.10 及以上)
    • 执行 flutter pub get
  2. 启动项目:
    • Web:flutter run -d chrome
    • 桌面/移动:选择对应设备后运行
  3. 主题切换:
    • 登录页或主界面右上角的图标按钮打开主题菜单
    • 选择 Light/Dark/System 即可全局生效
  4. 自定义外观:
    • 点击右上角调色板按钮,打开右侧「自定义」抽屉
    • 可选择颜色(Color Scheme)与圆角(Radius),并设置颜色模式

主题与外观

  • 主题实现:
    • 全局主题状态由 Global.themeModeGlobal.themeData 管理(见 lib/app/core/global.dart
    • 根组件在 main.dart 中通过 ShadApp.custom 将主题注入到 shadcn_ui
    • 所有页面与组件通过 ShadTheme.of(context) 读取颜色与排版信息
  • 模式切换:
    • 顶部的 ThemeToggleButton 提供 Light/Dark/System 三种模式切换
    • Light 模式使用当前选择的调色板(如 Blue/Zinc)
    • Dark 模式统一使用 shadcn_ui 官方暗色方案,背景与前景为暗色系
    • System 模式根据操作系统的亮暗模式自动选择 Light 或 Dark
  • 自定义外观:
    • 右侧「自定义」抽屉中可以调整:
      • 主题颜色(Color Scheme)
      • 圆角大小(Radius)
      • 颜色模式(Light/Dark/System)
    • 这些设置会持久化存储,在下次启动时自动恢复
  • 开发约定:
    • 新增组件时,应优先使用 ShadTheme.of(context).colorSchemetextTheme
    • 避免直接使用 Colors.*Theme.of(context) 的颜色,以保证主题切换时全局外观一致

效果展示

登录

image image

页面

image image image image

自适应

image

常见问题排查

  • 切到 Dark 但页面仍是亮色:
    • 检查页面/组件是否使用了 Colors.*Theme.of(context) 的颜色,改为 ShadTheme.of(context).colorSchemetextTheme
    • 确认当前模式是否为 System,且操作系统本身处于亮色;System 模式会跟随系统
    • 确认根组件仍然通过 ShadApp.custom 构建(见 main.dart),且 Global.setThemeMode 被调用
  • 菜单颜色与页面不一致:
    • 弹出菜单应从 ShadTheme.of(context) 取色;若使用了固定色值请替换
    • 关闭菜单后重新打开以应用最新主题

依赖说明

  • UI 组件:shadcn_ui
  • 路由与依赖注入:GetX

本项目遵循 LICENSE 中的开源许可。 本项目基于 Apache License 2.0 开源协议发布,详见 LICENSE

关于 AI 辅助

  • 本项目的部分代码与文档由 AI 辅助生成与优化,所有改动均经过人工审阅与测试验证
  • 欢迎以 Issue/PR 的形式提供建议或改进

About

flutter_admin flutter_dashboard gex5.0 shadcn_ui layout flutter_secure_storage dio

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors