Skip to content

Flu-CLI 智能动态代码片段使用指南

🎯 核心特性

Flu CLI VSCode 扩展提供智能动态代码片段功能,会根据你的项目配置(.flu-cli.json)自动适配可用的代码片段。

✨ 智能特性

  • 自动识别项目架构:根据 .flu-cli.json 中的 templatewithBasePage 配置,智能显示适合的代码片段
  • 动态过滤:如果项目禁用了 BasePage,相关的代码片段会自动隐藏
  • 无需手动同步:配置更改后,代码片段会自动更新,无需任何额外操作
  • 零配置使用:打开 Dart 文件即可使用,扩展会自动激活

📝 使用方法

1. 基本使用流程

  1. .dart 文件中输入 snippet 前缀(如 st)
  2. VSCode 会自动显示可用的代码片段
  3. 选择需要的片段,按 TabEnter 展开
  4. 光标会自动定位到第一个参数位置
  5. 输入参数值(如 Home)
  6. Tab 跳转到下一个参数
  7. 重复步骤 5-6 直到所有参数填写完毕

2. 配置示例

代码片段会根据项目配置自动适配:

启用 BasePage 的项目:

json
{
    "template": "lite",
    "generators": {
        "page": {
            "withBasePage": true  // 启用 BasePage(默认)
        }
    }
}

输入 st 会看到:

  • Flu: Stateful Page (BasePage) - 继承自 BasePage
  • Flu: Stateful Page (Simple) - 标准 StatefulWidget
  • Flu: Stateful Widget
  • Flu: Stateful Component

禁用 BasePage 的项目:

json
{
    "template": "custom",
    "generators": {
        "page": {
            "withBasePage": false  // 禁用 BasePage
        }
    }
}

输入 st 会看到:

  • Flu: Stateful Page (BasePage) - 自动隐藏
  • Flu: Stateful Page (Simple) - 标准 StatefulWidget
  • Flu: Stateful Widget
  • Flu: Stateful Component

3. Tabstop 语法说明

语法说明示例
${1:Name}第1个参数,默认值为 Name输入 Home 后,所有 ${1:Name} 都会替换为 Home
${2:Title}第2个参数,默认值为 Title独立参数,需要单独输入
${2:${1/(.*)/${1:/downcase}/}}第2个参数,自动转换第1个参数为小写如果第1个参数是 Home,这里自动变成 home

4. 示例:创建 Page

输入: stSimplePage + Tab

参数说明:

  • ${1:Name}: 页面名称(如 Home)
  • ${2:Title}: 页面标题(如 首页)

操作步骤:

  1. 输入 Home → 类名变成 HomePage
  2. Tab,输入 首页 → 标题变成 首页

最终代码:

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

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('首页'),
      ),
      body: Container(),
    );
  }
}

📋 可用代码片段

页面相关

前缀说明显示条件
stPageStateful Page (BasePage)启用 BasePage
stSimplePageStateful Page (Simple)始终显示
lessPageStateless Page (Simple)始终显示

ViewModel

前缀说明显示条件
viewmodelViewModel (BaseViewModel)启用 BasePage

组件相关

前缀说明显示条件
stWidgetStateful Widget始终显示
lessWidgetStateless Widget始终显示
stComponentStateful Component始终显示
componentStateless Component始终显示

其他

前缀说明显示条件
serviceService 类始终显示
modelModel 类始终显示

🔄 与 v1 的区别

v1 (静态代码片段)

  • ❌ 需要手动运行 flu-cli sync-snippets 同步
  • ❌ 所有代码片段始终显示,无法根据项目配置过滤
  • ❌ 更新配置后需要重新同步
  • ❌ 包含大量不常用的代码片段(如 Provider、GetX 特定片段)

v2 (动态代码片段)

  • ✅ 自动激活,无需手动同步
  • ✅ 根据项目配置智能显示适合的代码片段
  • ✅ 配置更改后自动更新
  • ✅ 精简到最常用的代码片段,保持简洁

🚫 已移除的代码片段

以下代码片段已从扩展中移除,不再支持:

  • providerPage - Provider 页面
  • consumer - Consumer Widget
  • selector - Selector Widget
  • getxPage - GetX 页面
  • getxController - GetX Controller
  • listPage - 列表页面
  • listViewModel - 列表 ViewModel
  • singleton - 单例模式
  • future - Future 方法
  • stream - Stream 方法

原因:

  1. 这些代码片段过于特定,不适合所有项目
  2. 使用 flu-cli add 命令生成更灵活
  3. 保持代码片段列表简洁,避免混淆

替代方案:

  • 使用 flu-cli add page home 生成页面
  • 使用 flu-cli add service api 生成服务
  • 自定义 VSCode 代码片段(见下文)

🛠️ 自定义代码片段

如果需要自定义代码片段:

步骤 1:打开片段设置

  1. 打开命令面板(Cmd+Shift+P / Ctrl+Shift+P
  2. 输入 Preferences: Configure User Snippets
  3. 选择 dart.json

步骤 2:添加片段

json
{
    "My Custom Widget": {
        "prefix": "mywidget",
        "body": [
            "class ${1:MyWidget} extends StatelessWidget {",
            "  const ${1:MyWidget}({Key? key}) : super(key: key);",
            "",
            "  @override",
            "  Widget build(BuildContext context) {",
            "    return ${2:Container}();",
            "  }",
            "}"
        ],
        "description": "My custom widget template"
    }
}

步骤 3:使用片段

.dart 文件中输入 mywidget,按 Tab 展开。

❓ 常见问题

Q1: 为什么我看不到某些代码片段?

A: 代码片段会根据项目配置动态显示。检查 .flu-cli.json 中的 withBasePage 设置:

  • withBasePage: true - 显示 BasePage 相关片段
  • withBasePage: false - 隐藏 BasePage 相关片段

Q2: 如何查看所有可用的 snippets?

A: 在 .dart 文件中:

  1. 输入前缀(如 st)
  2. 或按 Ctrl+Space(Windows/Linux) 或 Cmd+Space(Mac)
  3. 查看 Flu: 开头的代码片段

Q3: 代码片段不生效怎么办?

A: 确保:

  1. 已安装 Flu CLI VSCode 扩展
  2. .dart 文件中使用
  3. 扩展已激活(打开 Dart 文件时自动激活)
  4. 尝试重启 VSCode

Q4: 如何禁用动态代码片段?

A: 如果不想使用动态代码片段,可以:

  1. 在 VSCode 设置中禁用 Flu CLI 扩展
  2. 或使用自定义代码片段替代

🔗 相关链接


更新时间: 2025-12-10
版本: v2.0
适用于: flu-cli VSCode Extension v2.x

Released under the MIT License.