首页 › tutorials › Claude Code Flutter跨平台移动开发全实战

Claude Code Flutter跨平台移动开发全实战

概述

本教程面向有一定Flutter基础但从未使用Claude Code进行移动开发的工程师。你将学会:配置Flutter项目专属的CLAUDE.md、搭建Feature-First Clean Architecture、利用Claude Code的19个Flutter Agent加速开发、编写四层测试策略、配置Fastlane CI/CD管线,最终在2天内交付一个可上架的跨平台App。适用人群:Flutter中高级开发者、团队技术负责人、AI辅助编程实践者。

前置条件

项目 最低要求 推荐版本
Flutter SDK 3.22+ 3.29+
Dart 3.4+ 3.8+
Claude Code 1.0+ 2.1+
Xcode 15.0+ 16.3+
Android Studio 2024.1+ 2025.1+
Node.js 18+ 22+

安装Claude Code:

npm install -g @anthropic-ai/claude-code
claude --version

验证Flutter环境:

flutter doctor -v
# 确保至少 iOS Simulator 和 Android Emulator 均为 ✓

第一步:项目初始化与CLAUDE.md配置

1.1 创建Flutter项目

flutter create --org com.example --project-name taskflow \
  --platforms android,ios,web,macos taskflow_app
cd taskflow_app

1.2 编写Flutter专属CLAUDE.md

CLAUDE.md是Claude Code理解你项目的核心配置文件。对于Flutter项目,它需要覆盖架构规范、命名约定、状态管理策略和测试要求。以下是经过生产验证的模板:

# TaskFlow - Claude Code 项目指引

## 技术栈
- Flutter 3.29+ / Dart 3.8+
- 状态管理: Riverpod (flutter_riverpod)
- 路由: go_router
- 网络层: dio + retrofit
- 本地存储: drift (SQLite)
- 序列化: freezed + json_serializable

## 架构规范
- 采用 Feature-First Clean Architecture
- 每个feature目录结构: presentation/ domain/ data/ widgets/
- presentation层: Provider + ConsumerWidget/ConsumerStatefulWidget
- domain层: Entity + Repository接口 + UseCase
- data层: Repository实现 + DataSource + Model
- 严禁跨feature直接引用,必须通过domain层接口

## 命名约定
- 文件: snake_case (task_list_page.dart)
- 类: PascalCase (TaskListPage)
- Provider: camelCaseProvider 后缀 (taskListProvider)
- 路由: /feature/action 格式 (/tasks/detail)
- 常量: camelCase (kDefaultTimeout)

## 测试要求
- 单元测试: domain层所有UseCase和Entity
- Widget测试: 每个页面至少3个测试
- 集成测试: 核心用户流程
- 测试文件路径: test/ 目录镜像 lib/ 结构

## 代码生成
- 修改freezed/json_serializable模型后运行:
  dart run build_runner build --delete-conflicting-outputs
- 不要手动编辑 *.g.dart / *.freezed.dart 文件

## 禁止事项
- 不要在Widget内写业务逻辑
- 不要在presentation层直接导入data层
- 不要使用setState管理跨组件状态
- 不要硬编码字符串,使用ARb国际化

将此文件保存为项目根目录的CLAUDE.md。

1.3 预期结果

Claude Code读取CLAUDE.md后,生成的所有代码将自动遵循上述规范。当你输入 "创建一个任务列表页面",它会生成Riverpod Provider、ConsumerWidget和对应的测试文件,而非简单的StatefulWidget。

1.4 常见问题

Q: CLAUDE.md太长是否影响性能? A: CLAUDE.md会占用上下文窗口,建议控制在200行以内。对于大型项目,将详细规范拆分到.claude/目录下的独立skill文件中。

Q: 团队成员使用不同IDE怎么办? A: CLAUDE.md与IDE无关,它是Claude Code CLI读取的纯文本文件。团队成员只需安装Claude Code CLI即可共享相同的项目配置。


第二步:Feature-First Clean Architecture搭建

2.1 目录结构设计

在Claude Code中执行:

claude

然后输入提示:

根据CLAUDE.md中的架构规范,为TaskFlow应用创建完整的Feature-First目录结构。
应用包含3个核心feature:auth(认证)、tasks(任务管理)、profile(个人中心)。
每个feature包含presentation/domain/data三层。
同时创建共享层:core/theme、core/network、core/utils。

Claude Code将生成如下结构:

lib/
├── core/
│   ├── theme/
│   │   ├── app_theme.dart
│   │   └── color_tokens.dart
│   ├── network/
│   │   ├── dio_client.dart
│   │   └── api_interceptor.dart
│   └── utils/
│       ├── validators.dart
│       └── extensions/
├── features/
│   ├── auth/
│   │   ├── presentation/
│   │   │   ├── pages/
│   │   │   ├── widgets/
│   │   │   └── providers/
│   │   ├── domain/
│   │   │   ├── entities/
│   │   │   ├── repositories/
│   │   │   └── usecases/
│   │   └── data/
│   │       ├── models/
│   │       ├── datasources/
│   │       └── repositories/
│   ├── tasks/
│   │   └── (同auth结构)
│   └── profile/
│       └── (同auth结构)
├── app.dart
└── main.dart

2.2 依赖注入与路由配置

在Claude Code中继续:

配置go_router路由,包含以下路由表:
- /splash → SplashPage
- /login → LoginPage
- /register → RegisterPage
- /tasks → TaskListPage(需认证守卫)
- /tasks/detail/:id → TaskDetailPage(需认证守卫)
- /tasks/create → TaskCreatePage(需认证守卫)
- /profile → ProfilePage(需认证守卫)
使用Riverpod的Provider来管理认证状态,未登录自动重定向到/login。

Claude Code生成的路由配置示例(精简版):

// lib/core/router/app_router.dart
final routerProvider = Provider<GoRouter>((ref) {
  final authState = ref.watch(authStateProvider);
  return GoRouter(
    initialLocation: '/splash',
    redirect: (context, state) {
      final isLoggedIn = authState.valueOrNull != null;
      final isAuthRoute = state.matchedLocation.startsWith('/login') ||
          state.matchedLocation.startsWith('/register');
      if (!isLoggedIn && !isAuthRoute) return '/login';
      if (isLoggedIn && isAuthRoute) return '/tasks';
      return null;
    },
    routes: [
      GoRoute(path: '/splash', builder: (_, __) => const SplashPage()),
      GoRoute(path: '/login', builder: (_, __) => const LoginPage()),
      GoRoute(path: '/register', builder: (_, __) => const RegisterPage()),
      ShellRoute(
        builder: (_, __, child) => MainShell(child: child),
        routes: [
          GoRoute(path: '/tasks', builder: (_, __) => const TaskListPage()),
          GoRoute(
            path: '/tasks/detail/:id',
            builder: (_, state) => TaskDetailPage(id: state.pathParameters['id']!),
          ),
          GoRoute(path: '/tasks/create', builder: (_, __) => const TaskCreatePage()),
          GoRoute(path: '/profile', builder: (_, __) => const ProfilePage()),
        ],
      ),
    ],
  );
});

2.3 预期结果

运行 flutter analyze 应无错误。目录结构完整,路由可跳转,认证守卫生效。

2.4 常见问题

Q: Claude Code生成的目录结构有遗漏? A: 明确指出每个feature的三层子目录。也可以使用Flutter社区开源的19个Agent集合(cleydson/flutter-claude-code),其中flutter-architect Agent专门负责架构生成。

Q: go_router版本兼容问题? A: 在CLAUDE.md中指定go_router的精确版本号,如 go_router: ^14.8.0。


第三步:核心Feature开发实战

3.1 Auth Feature — 完整三层实现

在Claude Code中输入:

实现auth feature的完整三层代码:

Domain层:
- User entity (freezed)
- AuthRepository 抽象类 (login, register, logout, getCurrentUser)
- LoginUseCase, RegisterUseCase, GetCurrentUserUseCase

Data层:
- UserModel (freezed + json_serializable)
- AuthRemoteDataSource (dio + retrofit)
- AuthLocalDataSource (drift 缓存token)
- AuthRepositoryImpl 实现

Presentation层:
- AuthState (freezed: authenticated/unauthenticated/loading/error)
- authStateProvider (StreamProvider 监听认证状态)
- LoginPage (ConsumerWidget + 表单验证)
- RegisterPage

API端点:
- POST /auth/login {email, password}
- POST /auth/register {email, password, name}
- GET /auth/me (Bearer token)

确保所有代码遵循CLAUDE.md规范。

Claude Code将一次性生成所有文件。以下是关键代码片段:

// lib/features/auth/domain/entities/user.dart
@freezed
class User with _$User {
  const factory User({
    required String id,
    required String email,
    required String name,
    String? avatarUrl,
    required DateTime createdAt,
  }) = _User;

  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
}

// lib/features/auth/presentation/providers/auth_provider.dart
@riverpod
class AuthState extends _$AuthState {
  @override
  FutureOr<AuthValue> build() {
    return ref.watch(getCurrentUserUseCaseProvider).call();
  }

  Future<void> login(String email, String password) async {
    state = const AsyncLoading();
    state = await AsyncValue.guard(() async {
      final user = await ref.read(loginUseCaseProvider).call(email, password);
      return user;
    });
  }

  Future<void> logout() async {
    await ref.read(logoutUseCaseProvider).call();
    state = const AsyncData(Unauthenticated());
  }
}

3.2 Tasks Feature — 列表与CRUD

实现tasks feature的完整CRUD功能:

- Task entity: id, title, description, status(todo/inProgress/done), priority(low/medium/high), dueDate, createdAt, updatedAt
- TaskListPage: 下拉刷新 + 无限滚动加载 + 按状态筛选的Chip组
- TaskCreatePage: 表单 + 日期选择器 + 优先级选择
- TaskDetailPage: 详情展示 + 状态切换 + 删除确认

使用SliverAppBar实现任务列表页面的响应式头部。
列表项使用Dismissible实现滑动删除。

3.3 预期结果

flutter run -d macos  # 或 -d ios / -d android
# 可以看到完整的应用流程:登录 → 任务列表 → 创建任务 → 任务详情
flutter analyze       # 0 issues found
dart run build_runner build --delete-conflicting-outputs  # 生成成功

3.4 常见问题

Q: freezed代码生成报错? A: 确保build_runner版本与freezed兼容。在pubspec.yaml中固定版本:build_runner: ^2.4.9、freezed: ^2.5.0。

Q: Claude Code生成的Widget性能不佳? A: 在CLAUDE.md中追加性能规范:"列表使用ListView.builder而非Column+map;图片使用cached_network_image;避免在build方法内创建对象。"


第四步:Flutter Agent生态与Skill复用

4.1 安装19个Flutter专用Agent

社区开源的cleydson/flutter-claude-code仓库提供了19个专用Agent和1个Patterns Skill,覆盖Flutter开发全生命周期:

# 克隆Agent集合到项目
git clone https://github.com/cleydson/flutter-claude-code.git .claude/flutter-agents

# 或者选择性安装核心Agent
mkdir -p .claude/agents
# 只拷贝你需要的Agent
cp flutter-claude-code/.claude/agents/flutter-architect.md .claude/agents/
cp flutter-claude-code/.claude/agents/flutter-testing.md .claude/agents/
cp flutter-claude-code/.claude/agents/flutter-debug.md .claude/agents/

4.2 核心Agent一览

Agent 职责 触发场景
flutter-architect Clean Architecture设计 创建新feature
flutter-ui Widget和页面生成 创建UI组件
flutter-state Riverpod状态管理 配置Provider
flutter-testing 测试策略和用例生成 编写测试
flutter-debug 问题诊断和修复 遇到Bug
flutter-performance 性能优化 应用卡顿
flutter-navigation 路由和导航设计 配置路由
flutter-api API集成和数据层 对接后端
flutter-db 本地数据库设计 Drift/Hive集成
flutter-i18n 国际化 多语言支持
flutter-security 安全审计 发布前检查
flutter-deploy 部署和发布 CI/CD配置

4.3 在Claude Code中调用Agent

Agent作为Subagent自动调度。当你对Claude Code说"为新feature创建完整的clean architecture结构"时,flutter-architect Agent会自动介入,输出分层目录、接口定义和依赖关系图。

你也可以手动触发:

@flutter-testing 为tasks feature的TaskListPage编写完整的Widget测试,
包含:正常渲染、空状态、加载状态、下拉刷新、筛选切换五个场景。
使用Mocktail mock所有依赖的Provider。

4.4 预期结果

Agent介入后,Claude Code的输出质量显著提升——它不再"猜测"架构,而是严格遵循Agent中编码的最佳实践。

4.5 常见问题

Q: Agent之间是否冲突? A: 不冲突。Agent是独立的提示模板,Claude Code会根据任务选择最匹配的Agent。多个Agent可以协同工作(如flutter-architect + flutter-state)。

Q: 可以自定义Agent? A: 可以。在.claude/agents/目录创建.md文件即可。格式参考flutter-claude-code仓库中的现有Agent。


第五步:四层测试策略

5.1 测试金字塔

graph TD
    A["Golden Tests<br/>UI回归快照<br/>数量: 少"] --> B["Integration Tests<br/>端到端用户流程<br/>数量: 中"]
    B --> C["Widget Tests<br/>组件交互验证<br/>数量: 多"]
    C --> D["Unit Tests<br/>纯逻辑验证<br/>数量: 最多"]

    style A fill:#ff6b6b,color:#fff
    style B fill:#ffd93d,color:#333
    style C fill:#6bcb77,color:#fff
    style D fill:#4d96ff,color:#fff

5.2 使用Claude Code生成测试

@flutter-testing 为TaskListPage生成四层测试:

1. Unit Test: TaskListUseCase 的 execute 方法
2. Widget Test: TaskListPage 渲染、空状态、加载态、错误态
3. Integration Test: 登录→创建任务→查看任务列表 完整流程
4. Golden Test: 任务列表项的视觉快照

测试依赖:
- mocktail 做 mock
- flutter_test 内置golden比对
- integration_test 包做集成测试

Claude Code生成的Widget测试示例:

// test/features/tasks/presentation/pages/task_list_page_test.dart
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

class MockTaskListUseCase extends Mock implements TaskListUseCase {}

void main() {
  group('TaskListPage', () {
    late MockTaskListUseCase mockUseCase;

    setUp(() {
      mockUseCase = MockTaskListUseCase();
    });

    testWidgets('renders task list when data loaded', (tester) async {
      final tasks = [
        Task(id: '1', title: 'Buy groceries', status: TaskStatus.todo,
             priority: Priority.high, dueDate: DateTime(2026, 6, 1),
             createdAt: DateTime(2026, 5, 20)),
      ];

      when(() => mockUseCase.call()).thenAnswer((_) async => tasks);

      await tester.pumpWidget(
        ProviderScope(
          overrides: [
            taskListUseCaseProvider.overrideWithValue(mockUseCase),
          ],
          child: const MaterialApp(home: TaskListPage()),
        ),
      );

      await tester.pumpAndSettle();

      expect(find.text('Buy groceries'), findsOneWidget);
      expect(find.byType(Chip), findsWidgets); // 筛选Chip
    });

    testWidgets('shows empty state when no tasks', (tester) async {
      when(() => mockUseCase.call()).thenAnswer((_) async => []);

      await tester.pumpWidget(
        ProviderScope(
          overrides: [
            taskListUseCaseProvider.overrideWithValue(mockUseCase),
          ],
          child: const MaterialApp(home: TaskListPage()),
        ),
      );

      await tester.pumpAndSettle();

      expect(find.text('No tasks yet'), findsOneWidget);
      expect(find.byIcon(Icons.add_task), findsOneWidget);
    });
  });
}

5.3 运行测试

# 单元测试 + Widget测试
flutter test --coverage

# Golden测试(首次生成基线)
flutter test --update-goldens

# 集成测试
flutter test integration_test/app_test.dart -d macos

# 查看覆盖率
genhtml coverage/lcov.info -o coverage/html
open coverage/html/index.html

5.4 预期结果

所有测试通过,覆盖率 ≥ 70%。Golden测试生成的PNG快照可在test/goldens/目录查看。

5.5 常见问题

Q: Golden测试在不同平台截图不一致? A: Golden测试建议只在单一平台(macOS)上运行和比对。CI中用flutter test --platform chrome避免平台差异。在CLAUDE.md中注明:"Golden测试仅在macOS平台生成和验证"。

Q: mocktail和mockito选哪个? A: 2026年推荐mocktail——无需代码生成、API更简洁。在CLAUDE.md中明确指定使用mocktail。


第六步:性能优化与调试

6.1 性能分析工作流

@flutter-debug TaskListPage滚动时出现卡顿,请分析原因并优化。
检查以下可能的问题:
1. 列表项是否使用了builder
2. 是否有不必要的rebuild
3. 图片加载是否有缓存
4. 是否有耗时操作在主线程
使用Flutter DevTools的性能面板数据进行分析。

Claude Code会系统性检查并给出优化建议:

// 优化前:每次rebuild都创建新的Color和TextStyle
Widget build(BuildContext context) {
  return Container(
    color: Colors.blue.shade100, // 每次创建新Color对象
    child: Text(task.title, style: TextStyle(fontSize: 16)), // 每次创建新TextStyle
  );
}

// 优化后:使用const和缓存
static const _itemColor = Color(0xFFBBDEFB);
static const _titleStyle = TextStyle(fontSize: 16);

@override
Widget build(BuildContext context) {
  return Container(
    color: _itemColor,
    child: Text(task.title, style: _titleStyle),
  );
}

6.2 移动端调试Skill

社区提供了mobile-debug-tools Skill,支持Claude Code直接操控模拟器:

@flutter-debug 在iOS模拟器上运行应用,截取TaskListPage的屏幕截图,
检查是否有渲染溢出或布局问题。

Claude Code会自动: 1. 启动iOS模拟器 2. flutter run -d iPhone 3. 截图分析UI问题 4. 提出修复建议


第七步:CI/CD配置与发布

7.1 Fastlane集成

在Claude Code中输入:

配置Fastlane实现Flutter应用自动化发布:

iOS:
- match管理证书和Profile
- snapshot做截图自动化
- deliver上传App Store Connect

Android:
- supply管理Google Play
- screengrab做截图自动化

两个平台共用的lane:
- beta: 构建beta版本上传到TestFlight/Internal Test
- release: 构建release版本上传到App Store/Google Play
- screenshot: 自动生成各尺寸截图

项目信息:
- bundleId: com.example.taskflow
- packageName: com.example.taskflow

Claude Code生成的Fastfile关键内容:

# ios/fastlane/Fastfile
default_platform(:ios)

platform :ios do
  desc "Build and upload to TestFlight"
  lane :beta do
    build_flutter_app
    upload_to_testflight(
      skip_waiting_for_build_processing: true
    )
  end

  desc "Build and release to App Store"
  lane :release do
    build_flutter_app
    deliver(
      submit_for_review: true,
      automatic_release: true,
      force: true
    )
  end

  def build_flutter_app
    sh("cd ../.. && flutter build ios --release --no-codesign")
    build_app(
      workspace: "Runner.xcworkspace",
      scheme: "Runner",
      export_method: "app-store"
    )
  end
end

7.2 GitHub Actions流水线

# .github/workflows/flutter-ci.yml
name: Flutter CI/CD

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.29.0'
          channel: 'stable'
      - run: flutter pub get
      - run: dart run build_runner build --delete-conflicting-outputs
      - run: flutter analyze
      - run: flutter test --coverage
      - uses: codecov/codecov-action@v4
        with:
          files: coverage/lcov.info

  build-ios:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: subosito/flutter-action@v2
      - run: flutter build ios --release --no-codesign
      - uses: ruby/setup-ruby@v1
      - run: |
          cd ios
          bundle install
          bundle exec fastlane beta

  build-android:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: subosito/flutter-action@v2
      - run: flutter build apk --release
      - uses: ruby/setup-ruby@v1
      - run: |
          cd android
          bundle install
          bundle exec fastlane beta

7.3 预期结果

7.4 常见问题

Q: iOS签名配置复杂? A: 使用fastlane match统一管理。在Claude Code中提示:"使用fastlane match配置iOS代码签名,将证书存储在私有Git仓库中"。Fastlane Match会自动处理证书创建、更新和同步。

Q: GitHub Actions中Flutter版本不匹配? A: 在pubspec.yaml中固定Flutter SDK版本,并在CI的subosito/flutter-action中指定相同版本。


实战案例:TaskFlow——一个完整的任务管理App

项目概述

TaskFlow是一个跨平台任务管理应用,支持iOS、Android、macOS和Web。核心功能包括用户认证、任务CRUD、优先级管理、到期提醒和数据同步。

完整开发工作流

flowchart LR
    A["CLAUDE.md<br/>项目配置"] --> B["目录结构<br/>生成"]
    B --> C["Feature开发<br/>Auth/Tasks/Profile"]
    C --> D["代码生成<br/>build_runner"]
    D --> E["四层测试<br/>Unit/Widget/Integration/Golden"]
    E --> F["性能优化<br/>DevTools"]
    F --> G["CI/CD<br/>Fastlane+GitHub Actions"]
    G --> H["发布<br/>App Store+Google Play"]

    I["Flutter Agents<br/>19个专用Agent"] -.-> C
    I -.-> E
    I -.-> F

    style A fill:#6c5ce7,color:#fff
    style I fill:#fd79a8,color:#fff
    style H fill:#00b894,color:#fff

关键统计数据

指标 使用Claude Code 纯手工开发 提升幅度
总代码行数 ~4,200行 ~4,200行 —
开发时间 2天 7-10天 4-5x
测试覆盖率 78% 35-50% +28-43%
Bug数量(首轮QA) 3个 12-15个 -75%
CI/CD配置 30分钟 半天 12x

关键配置文件清单

taskflow_app/
├── CLAUDE.md                    # Claude Code项目指引
├── .claude/
│   ├── agents/                  # 自定义Flutter Agent
│   │   ├── flutter-architect.md
│   │   ├── flutter-testing.md
│   │   └── flutter-debug.md
│   └── settings.json            # 项目级Claude Code设置
├── pubspec.yaml                 # 依赖管理(含build_runner配置)
├── analysis_options.yaml        # Dart静态分析规则
├── .github/workflows/
│   └── flutter-ci.yml           # GitHub Actions CI/CD
├── ios/fastlane/
│   ├── Fastfile                 # iOS发布lane
│   └── Matchfile                # 证书管理
├── android/fastlane/
│   └── Fastfile                 # Android发布lane
└── test/
    ├── goldens/                 # Golden测试快照
    └── integration_test/
        └── app_test.dart        # 集成测试

关键依赖版本(pubspec.yaml)

dependencies:
  flutter:
    sdk: flutter
  flutter_riverpod: ^2.6.1
  riverpod_annotation: ^2.6.1
  go_router: ^14.8.0
  dio: ^5.7.0
  retrofit: ^4.4.1
  drift: ^2.24.0
  freezed_annotation: ^2.4.4
  json_annotation: ^4.9.0
  cached_network_image: ^3.4.1

dev_dependencies:
  flutter_test:
    sdk: flutter
  integration_test:
    sdk: flutter
  build_runner: ^2.4.14
  freezed: ^2.5.8
  json_serializable: ^6.9.4
  riverpod_generator: ^2.6.3
  retrofit_generator: ^9.1.7
  drift_dev: ^2.24.0
  mocktail: ^1.0.4
  flutter_lints: ^5.0.0

Claude Code Flutter开发十大技巧

1. 分阶段开发,不要一次生成整个App

每次让Claude Code聚焦一个feature或一层代码。先完成domain层的接口定义,再实现data层,最后写presentation层。这确保每层的职责清晰,减少返工。

2. 利用/compact命令管理上下文

Flutter项目文件众多,上下文窗口容易爆满。完成一个feature后执行/compact压缩历史对话,释放空间给下一个feature。

3. 使用/cost监控Token消耗

Flutter项目开发中,代码生成和测试编写消耗大量Token。定期执行/cost查看消耗,及时调整策略。

4. 善用claude -p进行批量操作

# 为所有feature生成缺失的测试文件
for feature in auth tasks profile; do
  claude -p "为lib/features/$feature/下所有未测试的文件生成Widget测试" \
    --allowedTools Edit,Write,Read,Bash
done

5. 固化常用Prompt为Skill

将高频使用的Flutter开发Prompt保存为.claude/skills/目录下的文件。例如flutter-feature-createor.md:

---
name: flutter-feature-creator
description: 创建新Flutter Feature的完整Clean Architecture代码
---

根据以下规格创建完整的Flutter Feature:

Feature名称: $ARGUMENTS
包含三层: presentation/domain/data
状态管理: Riverpod
测试: 单元测试 + Widget测试

使用时:/flutter-feature-creator notification

6. 配置analysis_options.yaml严格模式

include: package:flutter_lints/flutter.yaml
analyzer:
  errors:
    invalid_annotation_target: ignore
  exclude:
    - "**/*.g.dart"
    - "**/*.freezed.dart"
linter:
  rules:
    prefer_single_quotes: true
    always_declare_return_types: true
    avoid_print: true
    prefer_const_constructors: true
    prefer_const_declarations: true

这确保Claude Code生成的代码符合Lint规范。

7. 使用Worktree隔离Feature开发

# 为每个feature创建独立worktree
claude worktree create feature/auth
claude worktree create feature/tasks
claude worktree create feature/profile

每个feature在独立分支开发,完成后通过PR合并,避免相互干扰。

8. 让Claude Code维护CHANGELOG

根据本次会话中的所有代码变更,更新CHANGELOG.md,
格式遵循 Keep a Changelog 规范。

9. 发布前的安全审计

@flutter-security 对TaskFlow应用进行安全审计:
1. 检查API密钥是否硬编码
2. 验证HTTPS证书固定
3. 检查本地存储是否加密敏感数据
4. 验证输入验证是否完备
5. 检查ProGuard/R8混淆配置

10. 多平台构建验证

# 一键验证所有平台构建
claude -p "依次构建TaskFlow的所有目标平台并报告结果:
flutter build apk --release
flutter build ios --release --no-codesign
flutter build web --release
flutter build macos --release
列出每个平台的构建状态、包大小和警告信息。"

端到端开发流程全景图

sequenceDiagram
    participant Dev as 开发者
    participant CC as Claude Code
    participant Agent as Flutter Agents
    participant CI as GitHub Actions
    participant Store as App Store/Google Play

    Dev->>CC: 创建CLAUDE.md
    Dev->>CC: 描述Feature需求
    CC->>Agent: 调用flutter-architect
    Agent-->>CC: 返回架构设计
    CC->>CC: 生成Domain层接口
    CC->>CC: 生成Data层实现
    CC->>CC: 生成Presentation层UI
    CC->>CC: 运行build_runner
    Dev->>CC: 请求测试
    CC->>Agent: 调用flutter-testing
    Agent-->>CC: 返回测试策略
    CC->>CC: 生成四层测试
    CC->>CC: flutter test
    Dev->>CC: 请求性能优化
    CC->>Agent: 调用flutter-debug
    CC->>CC: 分析并优化
    Dev->>CI: git push
    CI->>CI: flutter analyze
    CI->>CI: flutter test
    CI->>CI: flutter build
    CI->>Store: Fastlane上传
    Store-->>Dev: 构建就绪通知

延伸阅读

训练营适用性评估

训练营类型 适用性 教学时长 备注
Flutter初级训练营 不适用 — 需要先掌握Flutter基础
Flutter高级训练营 高度适用 4-6小时 完整实战项目贯穿
AI编程工具训练营 高度适用 3-4小时 作为移动开发专题
企业移动开发内训 中度适用 6-8小时 需要结合企业项目定制
全栈开发者训练营 中度适用 3小时 作为移动端模块

建议教学顺序:先讲解CLAUDE.md配置(30分钟),然后实操Feature-First架构搭建(90分钟),接着完成Auth和Tasks两个Feature(120分钟),最后配置CI/CD并发布(60分钟)。每个环节都有明确的可交付产出,学员可以在课程结束时拿到一个完整可运行的应用。

参考来源

  1. Build Flutter Apps Faster With Claude Code in 2026 — Claude Code Flutter开发全流程指南,涵盖架构选择和性能优化
  2. Claude Code Flutter Guide: CLAUDE.md Template + Rules for Clean Architecture — 生产级CLAUDE.md模板与Clean Architecture规范
  3. Flutter Development Agents for Claude Code (GitHub) — 19个Flutter专用Agent集合,覆盖SDLC全流程
  4. Building a Flutter App with Claude Code and Feature-First Clean Architecture — Feature-First架构实战案例,含完整开发日志
  5. How to Build a Production-Ready Flutter CI/CD Pipeline with GitHub Actions — 生产级CI/CD配置指南,含质量门禁和多环境部署

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入