Skip to content

自定义模板

除了内置模板,Flu CLI VSCode 扩展支持使用自定义模板,让你可以打造符合团队规范的项目结构。

模板类型

扩展支持两种自定义模板:

类型说明适用场景
Git 仓库从 Git 仓库克隆模板团队共享、版本控制
本地文件夹使用本地目录作为模板个人使用、快速测试

添加 Git 模板

步骤 1:准备 Git 仓库

确保你的 Git 仓库包含有效的 Flutter 项目结构:

my-template/
├── lib/
│   └── main.dart
├── pubspec.yaml
├── README.md
└── ...

要求

  • 必须包含 pubspec.yaml
  • 必须包含 lib/main.dart
  • 推荐包含 .gitignore

步骤 2:添加模板

  1. 创建新项目时,选择 "自定义模板..."
  2. 选择 "添加自定义模板"
  3. 选择 "Git 仓库"
  4. 输入 Git URL

支持的 Git 平台

  • GitHub: https://github.com/username/repo.git
  • GitLab: https://gitlab.com/username/repo.git
  • Gitee: https://gitee.com/username/repo.git
  • 私有仓库: https://git.company.com/team/repo.git

步骤 3:输入模板名称

输入一个易于识别的名称,如:

  • 团队标准模板
  • 电商项目模板
  • 企业级模板

步骤 4:等待下载

扩展会自动:

  1. 克隆 Git 仓库
  2. 缓存到本地
  3. 验证模板有效性
  4. 添加到模板列表

步骤 5:使用模板

下次创建项目时,你的自定义模板会出现在模板列表中,使用方式与内置模板相同。

添加本地模板

步骤 1:准备本地目录

确保本地目录包含有效的 Flutter 项目结构。

步骤 2:添加模板

  1. 创建新项目时,选择 "自定义模板..."
  2. 选择 "添加自定义模板"
  3. 选择 "本地文件夹"
  4. 浏览到模板目录

步骤 3:输入模板名称

输入模板名称,如 我的本地模板

步骤 4:完成

模板立即可用,无需下载。

管理模板

查看模板列表

创建项目时,所有模板(内置 + 自定义)都会显示在列表中。

模板信息

  • 模板名称
  • 模板类型(内置/Git/本地)
  • 最后使用时间
  • 模板路径

删除模板

  1. 创建项目时,选择 "自定义模板..."
  2. 选择 "管理自定义模板"
  3. 选择要删除的模板
  4. 确认删除

注意

  • 删除操作不可恢复
  • 只能删除自定义模板,不能删除内置模板
  • 删除后缓存也会被清理

更新模板

Git 模板

Git 模板会自动检查更新:

  1. 创建项目时选择 Git 模板
  2. 扩展会检查远程仓库是否有更新
  3. 如果有更新,会提示是否拉取最新版本
  4. 确认后自动更新缓存

手动更新

  1. 删除旧模板
  2. 重新添加(会拉取最新版本)

本地模板

本地模板实时使用,无需更新。修改本地目录后,下次创建项目时自动使用最新内容。

模板结构要求

必需文件

my-template/
├── lib/
│   └── main.dart          # 必需
├── pubspec.yaml           # 必需
└── README.md              # 推荐

推荐结构

my-template/
├── lib/
│   ├── main.dart
│   ├── core/              # 核心基础设施
│   ├── shared/            # 共享资源
│   └── features/          # 功能模块
├── test/                  # 测试
├── assets/                # 资源文件
├── pubspec.yaml
├── .gitignore
├── analysis_options.yaml  # 代码分析配置
└── README.md

占位符

模板中可以使用以下占位符,创建项目时会自动替换:

占位符说明示例
项目名称my_app
包名com.example.my_app
项目描述A new Flutter project
作者名称Your Name

使用示例

pubspec.yaml

yaml
name: { { projectName } }
description: { { description } }
publish_to: 'none'
version: 1.0.0+1

environment:
    sdk: '>=3.0.0 <4.0.0'

dependencies:
    flutter:
        sdk: flutter

lib/main.dart

dart
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '{{projectName}}',
      home: const HomePage(),
    );
  }
}

README.md

markdown
# {{projectName}}

{{description}}

## Author

{{author}}

模板最佳实践

1. 包含完整的项目结构

my-template/
├── lib/
│   ├── main.dart
│   ├── core/
│   │   ├── theme/
│   │   ├── router/
│   │   └── constants/
│   ├── shared/
│   │   ├── widgets/
│   │   └── utils/
│   └── features/
│       └── home/
├── test/
├── assets/
│   ├── images/
│   └── fonts/
├── pubspec.yaml
├── .gitignore
├── analysis_options.yaml
└── README.md

2. 提供清晰的 README

markdown
# 项目模板

## 特性

-   MVVM 架构
-   模块化设计
-   主题系统
-   路由管理

## 目录结构

\`\`\`
lib/
├── core/ # 核心基础设施
├── shared/ # 共享资源
└── features/ # 功能模块
\`\`\`

## 使用说明

1. 安装依赖:`flutter pub get`
2. 运行项目:`flutter run`

## 开发规范

-   使用 MVVM 架构
-   每个功能模块独立
-   遵循命名规范

3. 配置代码分析

analysis_options.yaml

yaml
include: package:flutter_lints/flutter.yaml

linter:
    rules:
        - prefer_const_constructors
        - prefer_const_literals_to_create_immutables
        - avoid_print
        - prefer_single_quotes

4. 提供示例代码

在模板中包含示例代码,帮助团队成员快速上手:

lib/features/home/
├── pages/
│   └── home_page.dart          # 示例页面
├── viewmodels/
│   └── home_viewmodel.dart     # 示例 ViewModel
└── widgets/
    └── home_card.dart          # 示例组件

5. 包含常用依赖

pubspec.yaml

yaml
dependencies:
    flutter:
        sdk: flutter

    # 状态管理
    provider: ^6.0.0

    # 网络请求
    http: ^1.1.0
    dio: ^5.0.0

    # 本地存储
    shared_preferences: ^2.0.0

    # 路由
    go_router: ^12.0.0

    # UI 组件
    flutter_screenutil: ^5.9.0

dev_dependencies:
    flutter_test:
        sdk: flutter
    flutter_lints: ^3.0.0

6. 配置 .gitignore

gitignore
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

团队协作场景

场景 1:统一团队规范

  1. 创建团队标准模板仓库
  2. 包含团队的代码规范和最佳实践
  3. 团队成员添加该模板
  4. 所有新项目使用统一模板

场景 2:多项目类型

为不同类型的项目创建不同模板:

  • 电商项目模板:包含商品、订单、支付等模块
  • 社交项目模板:包含用户、动态、聊天等模块
  • 工具类项目模板:简化的结构,快速开发

场景 3:版本管理

使用 Git 分支管理模板版本:

  • main 分支:稳定版本
  • dev 分支:开发版本
  • v1.0 标签:历史版本

团队成员可以选择使用不同版本的模板。

私有仓库认证

HTTPS 认证

对于私有仓库,扩展会提示输入用户名和密码:

Git URL: https://git.company.com/team/template.git
Username: your-username
Password: your-password

SSH 认证

推荐使用 SSH 密钥认证:

  1. 配置 SSH 密钥:

    bash
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  2. 添加公钥到 Git 平台

  3. 使用 SSH URL:

    git@git.company.com:team/template.git

常见问题

模板下载失败?

可能原因

  1. 网络问题
  2. Git URL 错误
  3. 权限不足(私有仓库)
  4. Git 未安装

解决方案

  1. 检查网络连接
  2. 验证 Git URL 是否正确
  3. 确认有仓库访问权限
  4. 安装 Git:git --version

模板无效?

可能原因

  1. 缺少必需文件(pubspec.yamllib/main.dart
  2. 项目结构不正确
  3. pubspec.yaml 格式错误

解决方案

  1. 检查模板结构
  2. 确保包含必需文件
  3. 验证 pubspec.yaml 格式

如何共享模板?

方式 1:Git 仓库

  1. 将模板推送到 Git 仓库
  2. 分享 Git URL 给团队成员
  3. 团队成员添加该 URL

方式 2:本地共享

  1. 将模板目录复制到共享位置
  2. 团队成员添加本地路径

模板更新后如何同步?

Git 模板

  1. 删除旧模板
  2. 重新添加(自动拉取最新版本)

本地模板: 自动使用最新内容,无需操作。

下一步

相关链接

Released under the MIT License.