GetX Scaffold
A lightweight and robust Visual Studio Code extension for Flutter developers to generate GetX Scaffold (Page + Controller), GetView, GetBuilder, and GetxController directly from the file Explorer context menu.
一个专为 Flutter 开发者打造的轻量高效 VS Code 扩展,在资源管理器目录右键菜单中提供独立的 GetX 样板代码生成分组(支持 Scaffold、GetView、GetBuilder、Controller)。
✨ Features 特性亮点
- ⚡ 快速生成:在 VS Code 侧边栏任意文件夹右键即可一键生成对应 GetX 结构。
- 🧩 四种代码模版:
- GetX: Scaffold - 一键生成完整页面(含路由快捷导航
to() / off() / offAll() 与延迟加载 Controller 绑定)与控制器。
- GetX: GetView - 快速生成继承自
GetView<T> 的纯视图组件。
- GetX: GetBuilder - 快速生成带有私有控制器的内聚局部状态管理组件。
- GetX: Controller - 生成带有完整生命周期(
onInit、onReady、onClose)的独立控制器。
- 🛡️ 安全保障与原子回滚:当目标文件已存在时自动停止不覆盖;生成多文件遇到错误时自动回滚清理,防止残留脏文件。
- ⚙️ 灵活定制导入:支持自定义全局或项目级
getxScaffold.getxImport 导入路径。
目录右键命令
在任意目录右击,可以看到以下连续分组:
GetX: Scaffold
GetX: GetView
GetX: GetBuilder
GetX: Controller
每个命令都会弹出名称输入框。支持 UserProfile、user_profile、user-profile 等格式,并直接在当前目录生成文件。
GetX: Scaffold
输入 UserProfile 后生成:
user_profile_page.dart
user_profile_controller.dart
Page 继承 GetView<UserProfileController>,通过 Binding 延迟注册 Controller,并提供:
UserProfilePage.to();
UserProfilePage.off();
UserProfilePage.offAll();
对应模板包含:
static Future<T?>? to<T>() => Get.to<T>(
() => const UserProfilePage(),
binding: BindingsBuilder(() {
Get.lazyPut(UserProfileController.new);
}),
);
static Future<T?>? off<T>() => Get.off<T>(
() => const UserProfilePage(),
binding: BindingsBuilder(() {
Get.lazyPut(UserProfileController.new);
}),
);
static Future<T?>? offAll<T>() => Get.offAll<T>(
() => const UserProfilePage(),
binding: BindingsBuilder(() {
Get.lazyPut(UserProfileController.new);
}),
);
Controller 包含 onInit、onReady 和 onClose 生命周期。
GetX: GetView
输入 UserProfile 后生成:
user_profile_view.dart
核心模板:
class UserProfileView extends GetView<T> {
const UserProfileView({super.key});
@override
Widget build(BuildContext context) {
return const SizedBox.shrink();
}
}
GetView<T> 中的 T 是待替换占位符。请将 T 改为实际 Controller;替换前该 Dart 文件无法编译。
GetX: GetBuilder
输入 UserProfile 后生成:
user_profile_widget.dart
文件内同时包含私有 Controller:
class _UserProfileController extends GetxController {}
class UserProfileWidget extends StatelessWidget {
const UserProfileWidget({super.key});
@override
Widget build(BuildContext context) {
return GetBuilder<_UserProfileController>(
init: _UserProfileController(),
builder: (controller) {
return const SizedBox.shrink();
},
);
}
}
GetX: Controller
输入 UserProfile 后只生成:
user_profile_controller.dart
Controller 包含:
@override
void onInit() {
super.onInit();
}
@override
void onReady() {
super.onReady();
}
@override
void onClose() {
super.onClose();
}
安全策略
- 任一目标文件已经存在时,整个操作停止,不覆盖文件。
- Scaffold 多文件生成中途失败时,自动回滚本次已经创建的文件。
- 成功后自动打开主要文件。
- 输入取消、为空或非法时不生成文件。
自定义 GetX 导入
默认 GetX 导入为:
package:get/get.dart
可以在 VS Code 用户设置或项目 .vscode/settings.json 中覆盖:
{
"getxScaffold.getxImport": "package:flutter_base/flutter_base.dart"
}
配置值只填写 Dart URI,不要填写完整的 import 语句。
本地开发
要求:
- Node.js 22 LTS 或更高版本
- npm
- VS Code 1.90 或更高版本
安装依赖:
npm install
打开本项目后按 F5,VS Code 会编译 TypeScript 并启动 Extension Development Host。
检查与测试
npm run check
该命令运行 ESLint、TypeScript 编译和自动化测试。
打包和本地安装
npm run package
产物名称:
getx-scaffold-0.2.0.vsix
在 VS Code 扩展面板右上角选择 Install from VSIX...,然后选择该文件。
License
MIT License,完整文本见插件根目录的 LICENSE 文件。