mcpField
F
flutter-init

flutter-init

github.com/bear2u开发93555 次安装18 周前更新
代码仓库

关于 flutter-init

flutter-init 是交互式 Flutter 应用生成技能,可按所选领域和技术预设创建项目。它生成基于 Clean Architecture 的 CRUD 结构、配置所选软件包,并通过 flutter analyze 检查结果。

主要功能

  1. 01生成 Todo、Habit、Note、Expense 或自定义应用
  2. 02交互选择项目与技术预设
  3. 03创建 Clean Architecture CRUD 脚手架
  4. 04配置软件包与项目设置
  5. 05执行代码生成和 flutter analyze

适用场景

  1. 01启动 Flutter Todo 或 Habit 跟踪应用
  2. 02创建 Note 或 Expense 管理应用
  3. 03搭建自定义实体的 CRUD 项目

安装

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

$npx skills add https://github.com/bear2u/my-skills --skill flutter-init

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

附带文件README.mdreferences/setup-guide.md

详细介绍

Flutter Init Skill

根据领域创建 Flutter 项目,并自动配置现代化架构。 选择 Todo、Habit、Note、Expense 或 Custom 领域,即可立即生成基于 Clean Architecture 的完整 CRUD 应用。

快速开始

运行技能时,系统会要求输入以下信息:

  • 文件夹名称(例如:my_habit_app)
  • 项目名称/包名称(例如:habit_app)
  • 选择领域(Todo/Habit/Note/Expense/Custom)
  • 选择技术栈预设(Minimal/Essential/Full Stack/Custom)

之后会自动执行以下步骤:

# 1. 프로젝트 생성 (Android/Kotlin, iOS/Swift)
flutter create --platforms android,ios --android-language kotlin --org com.example [폴더명]

# 2. 패키지 설치
flutter pub get

# 3. 도메인별 Clean Architecture 코드 자동 생성
# - domain/entities/[domain].dart (Freezed 엔티티)
# - data/datasources/local/app_database.dart (Drift 테이블)
# - data/repositories/[domain]_repository_impl.dart (Repository 구현)
# - presentation/providers/[domain]_providers.dart (Riverpod 3.0)
# - presentation/screens/* (List/Detail/Form 화면)

# 4. 코드 생성 (Freezed, Drift, JSON Serializable)
dart run build_runner build --delete-conflicting-outputs

# 5. 코드 검증 및 오류 자동 수정 (필수)
flutter analyze

# 6. 앱 실행
flutter run

任务说明

重要:此技能以交互方式运行。

步骤 1:询问领域和项目设置

首先询问用户:

“正在创建 Flutter 应用。请提供以下信息:

1. 选择领域(实体)

您想创建哪种领域的应用?

A) Todo(待办事项管理)

  • 字段:title、description、isCompleted、createdAt、completedAt
  • 功能:CRUD、筛选(全部/进行中/已完成)、复选框切换

B) Habit(习惯追踪器)

  • 字段:name、description、frequency(daily/weekly/monthly)、streak、lastCompletedAt、goal、isActive
  • 功能:CRUD、连续记录追踪、目标达成率、完成打卡

C) Note(笔记)

  • 字段:title、content、tags、isPinned、createdAt、updatedAt
  • 功能:CRUD、按标签筛选、置顶笔记、搜索

D) Expense(支出管理)

  • 字段:amount、category、description、date、paymentMethod
  • 功能:CRUD、按类别汇总、月度统计、筛选

E) Custom(自定义)

  • 手动输入实体名称和字段

2. 项目信息

  • 文件夹名称:用于创建项目的文件夹名称(默认值:[领域]_app,例如:habit_app)
    • Flutter 项目将在此文件夹中创建
  • 项目名称(包名称):Flutter 包名称(默认值:与文件夹名称相同)
    • 用于 pubspec.yaml 的 name 字段
    • 用于 import 语句(例如:package:habit_app/...)
  • 组织名称:(默认值:com.example)
    • 用于 Android/iOS 包标识符(例如:com.example.habit_app)

3. 选择技术栈预设

请选择以下其中一项:

A) Essential(推荐)

  • ✅ GoRouter(类型安全的路由)
  • ✅ SharedPreferences(保存本地设置)
  • ✅ FPDart(函数式错误处理)
  • ✅ Google Fonts
  • ✅ FluentUI Icons
  • ❌ 不包含 Auth 系统
  • ❌ 不包含 Responsive Utils

B) Minimal(最精简)

  • ❌ 不使用 GoRouter(使用基本 Navigator)
  • ✅ SharedPreferences
  • ❌ 不包含 FPDart
  • ❌ 不包含 Google Fonts
  • ✅ 基本 FluentUI Icons
  • ❌ 不包含 Auth 系统
  • ❌ 不包含 Responsive Utils

C) Full Stack(全部功能)

  • ✅ GoRouter
  • ✅ SharedPreferences
  • ✅ FPDart(函数式错误处理)
  • ✅ Google Fonts
  • ✅ Responsive Utils
  • ✅ FluentUI Icons
  • ✅ Auth 系统(Login/Register)——根据所选领域决定

D) Custom(自定义)

  • 分别选择各项功能

您想选择哪个领域和预设?(领域:A/B/C/D/E,预设:A/B/C/D)”

步骤 2:选择 Custom 时的后续问题
2-1. 选择 Custom 领域(E)时:
  1. 实体名称:输入实体名称(例如:Task、Event、Book)
  2. 字段定义:输入各个字段(格式:字段名:类型,例如:title:String、amount:double、isActive:bool)
    • 支持的类型:String、int、double、bool、DateTime
    • 自动添加 createdAt 和 updatedAt
  3. 主要功能:选择用于筛选/排序的字段
2-2. 选择 Custom 技术栈预设(D)时:

依次询问以下问题:

  1. 导航:是否使用 GoRouter?(是/否)
  2. 错误处理:是否使用 FPDart?(是/否)
  3. UI:是否使用 Google Fonts?(是/否)
  4. 响应式:是否包含 Responsive Utils?(是/否)
  5. 认证系统:是否包含 Auth 系统?(是/否)
步骤 3:根据所选领域和技术栈创建项目
  1. 创建 Flutter 项目:

    • 使用用户指定的文件夹名创建项目
    • 命令:flutter create --platforms android,ios --android-language kotlin --org [조직명] [폴더명]
    • 示例:flutter create --platforms android,ios --android-language kotlin --org com.example my_habit_app
    • 如果文件夹名和项目名(包名)不同,请在创建后修改 pubspec.yaml 中的 name 字段
  2. 确认 Kotlin DSL(最新版 Flutter 会自动使用 Kotlin DSL)

  3. 安装所选软件包:更新 pubspec.yaml 后运行 flutter pub get

  4. 创建文件夹结构:Clean Architecture(core、data、domain、presentation)

  5. 生成领域专属样板代码:

    A) Todo:title、description、isCompleted、createdAt、completedAt

    • Repository:getTodos、createTodo、updateTodo、toggleCompletion、deleteTodo
    • Providers:filteredTodosProvider(all/pending/completed)
    • UI:TodoListScreen(筛选)、TodoDetailScreen、TodoFormDialog

    B) Habit:name、description、frequency、streak、lastCompletedAt、goal、isActive

    • Repository:getHabits、createHabit、updateHabit、completeHabit、deleteHabit
    • Providers:filteredHabitsProvider(active/inactive)、habitStatsProvider
    • UI:HabitListScreen(统计)、HabitDetailScreen、HabitFormDialog

    C) Note:title、content、tags、isPinned、createdAt、updatedAt

    • Repository:getNotes、createNote、updateNote、togglePin、deleteNote
    • Providers:filteredNotesProvider(pinned/all/byTag)、searchProvider
    • UI:NoteListScreen(搜索/标签)、NoteDetailScreen、NoteFormDialog

    D) Expense:amount、category、description、date、paymentMethod

    • Repository:getExpenses、createExpense、updateExpense、deleteExpense
    • Providers:expensesByCategory、monthlyStats、filteredExpenses
    • UI:ExpenseListScreen(统计)、ExpenseDetailScreen、ExpenseFormDialog

    E) Custom:自定义字段

    • Repository:基本 CRUD 方法
    • Providers:基本列表 provider
    • UI:基本的 List/Detail/Form 页面
  6. 创建配置文件(路由、存储、多语言等)

  7. 更新 Android 设置(对于 flutter_local_notifications 至关重要):

    • 在 android/app/build.gradle.kts 中启用核心库脱糖:
      android {
          compileOptions {
              sourceCompatibility = JavaVersion.VERSION_11
              targetCompatibility = JavaVersion.VERSION_11
              isCoreLibraryDesugaringEnabled = true  // 추가
          }
      }
      dependencies {
          coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")  // 추가
      }
      
  8. 生成代码:dart run build_runner build --delete-conflicting-outputs

  9. 验证代码并修复错误:

    a. 运行 flutter analyze

    b. 修复发现的错误:

    • 兼容 Freezed 3.0(至关重要):所有 Freezed 实体都必须使用 sealed class
      • ❌ class User with _$User
      • ✅ sealed class User with _$User
    • 主题设置:使用 CardThemeData 替代已弃用的 CardTheme
    • API Client Map 类型:返回 Map<String, dynamic> 时验证生成的代码
      • 如果出现 retrofit_generator 生成的 dynamic.fromJson 错误,需要进行修复
    • 修正 import 路径:将所有相对路径改为 package: 格式
      • 示例:import '../../domain/entities/todo.dart'; → import 'package:todo_app/domain/entities/todo.dart';
    • 确认软件包依赖:添加缺少的软件包(例如 shared_preferences)
    • 兼容 Riverpod 3.0:将 StateNotifier 改为 Notifier,将 StateProvider 改为 NotifierProvider
    • 确认 FluentUI 图标名称:替换不存在的图标
    • 类型安全:使用 switch expression,并遵循 null safety

    c. 重新验证:反复检查,直到没有 error 级别的错误

    d. 目标:flutter analyze 的结果为“0-1 issues found”(仅允许 info 级别的问题)

    ✅ 至关重要:此步骤为必需步骤。必须清除所有 error 才能进入下一步。

步骤 4:最终验证与说明

✅ CRITICAL:此步骤是项目完成的必要条件。

  1. 运行最终分析:

    flutter analyze
    
  2. 成功标准:

    • ✅ 成功示例:

      Analyzing todo_app...
      No issues found!
      

      或

      Analyzing todo_app...
      1 issue found. (ran in 2.3s)
      info • Prefer using lowerCamelCase for constant names • lib/core/constants.dart:5:7 • constant_identifier_names
      
    • ❌ 失败示例(如有 error,必须修复):

      error • Target of URI doesn't exist: 'package:...' • lib/main.dart:5:8 • uri_does_not_exist
      error • The getter 'xyz' isn't defined for the type 'ABC' • lib/presentation/screens/home.dart:42:15
      
  3. 验证结果摘要(成功时):

    ✅ Flutter 프로젝트 생성 완료!
    ✅ 코드 생성 완료 (Freezed, Drift, JSON Serializable)
    ✅ Flutter analyze 통과 (0-1 issues found, info 레벨만)
    ✅ 모든 패키지 설치 완료
    
  4. 提供项目信息:

    • 文件夹名:[用户输入值](例如:my_habit_app)
    • 项目名(包名):[用户输入值](例如:habit_app)
    • 组织名:[用户输入值](例如:com.example)
    • 领域:[所选领域](Todo/Habit/Note/Expense/Custom)
    • 所选技术栈:[预设名称](GoRouter、Drift、FPDart 等)
    • 主要功能:[领域] CRUD、多语言支持、本地存储等
    • 生成的文件:XX 个 Dart 文件(core、data、domain、presentation)
  5. 运行方式说明:

    cd [폴더명]
    flutter run
    
  6. 后续步骤建议(可选,按领域区分):

    • Todo:添加/修改/删除条目、筛选(全部/进行中/已完成)、切换完成状态
    • Habit:记录习惯、查看连续记录、目标完成率、查看统计数据
    • Note:编写/编辑笔记、添加标签、置顶笔记、搜索
    • Expense:记录支出、按类别查看统计、按月汇总、筛选
    • 通用:切换语言(英语 ↔ 韩语)、切换深色/浅色主题

核心原则

  • Repository 模式:分离数据层和领域层
  • 依赖注入:通过 Riverpod 3.x 管理依赖项
  • 不可变性:使用 Freezed 创建不可变模型
  • 多语言支持:使用 Easy Localization 实现 i18n
  • 现代 UI:使用 FluentUI Icons

参考文件

references/setup-guide.md - 完整指南

  • 基础设置(按领域配置 CRUD、多语言、FluentUI Icons)
  • 可选项:GoRouter、Auth、FPDart、Google Fonts、Responsive Utils、更新包

说明

  • 交互式技能:让用户选择领域和预设,配置定制化应用
  • 领域支持:Todo、Habit、Note、Expense、Custom(自定义)
  • 提供的预设:Full Stack、Essential、Minimal、Custom
  • 可选功能:GoRouter、Auth、FPDart、Google Fonts、Responsive Utils
  • 默认包含:Riverpod 3.x、Easy Localization、FluentUI Icons、Drift、Dio、SharedPreferences
  • 多语言:英语/韩语(可扩展)
  • 平台:Android/Kotlin、iOS/Swift(不包括 Web/Windows/Linux)
  • 质量保证:
    • 所有项目都必须通过 flutter analyze
    • 遵循 package: 导入风格
    • 确保类型安全
    • 自动生成代码
    • 按领域优化 UI/UX

评论

支持 Markdown