flu-cli 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,392 +0,0 @@
1
- {
2
- "InkWell": {
3
- "prefix": "ikw",
4
- "body": [
5
- "InkWell(",
6
- "\tonTap: () {",
7
- "",
8
- "\t},",
9
- "\tchild: body,",
10
- ");"
11
- ]
12
- },
13
- "by": {
14
- "prefix": "bdy",
15
- "body": [
16
- "Widget body = Container();",
17
- "return body;",
18
- ]
19
- },
20
- "flu.stPage": {
21
- "prefix": "stPage",
22
- "description": "Stateful 页面(使用 BasePage)",
23
- "body": [
24
- "import 'package:flutter/material.dart';",
25
- "import '../base/base_page.dart';",
26
- "import '../viewmodels/${2:${1/(.*)/${1:/downcase}/}_viewmodel}.dart';",
27
- "",
28
- "class ${1:Name}Page extends BasePage<${1:Name}ViewModel> {",
29
- " const ${1:Name}Page({super.key});",
30
- "",
31
- " @override",
32
- " State<${1:Name}Page> createState() => _${1:Name}PageState();",
33
- "}",
34
- "",
35
- "class _${1:Name}PageState extends BasePageState<${1:Name}ViewModel, ${1:Name}Page> {",
36
- " // 1. UI 配置",
37
- " @override",
38
- " String get title => '${3:Title}';",
39
- "",
40
- " // 2. ViewModel",
41
- " @override",
42
- " ${1:Name}ViewModel createViewModel() => ${1:Name}ViewModel();",
43
- "",
44
- " // 3. UI 构建",
45
- " @override",
46
- " Widget buildContent(BuildContext context) {",
47
- " return Center(",
48
- " child: Text('${1:Name} Page'),",
49
- " );",
50
- " }",
51
- "}",
52
- ""
53
- ]
54
- },
55
- "flu.stSimplePage": {
56
- "prefix": "stSimplePage",
57
- "description": "Stateful 简单页面 (无 BasePage)",
58
- "body": [
59
- "import 'package:flutter/material.dart';",
60
- "",
61
- "class ${1:Name}Page extends StatefulWidget {",
62
- " const ${1:Name}Page({super.key});",
63
- "",
64
- " @override",
65
- " State<${1:Name}Page> createState() => _${1:Name}PageState();",
66
- "}",
67
- "",
68
- "class _${1:Name}PageState extends State<${1:Name}Page> {",
69
- " // 1. 状态定义",
70
- "",
71
- " // 2. UI 构建",
72
- " @override",
73
- " Widget build(BuildContext context) {",
74
- " final appBar = _buildAppBar(context);",
75
- " final body = _buildBody(context);",
76
- " return Scaffold(appBar: appBar, body: body);",
77
- " }",
78
- "",
79
- " Widget _buildBody(BuildContext context) {",
80
- " return const Center(child: Text('${1:Name} Page'));",
81
- " }",
82
- "",
83
- " AppBar _buildAppBar(BuildContext context) {",
84
- " return AppBar(title: const Text('${1:Name}'));",
85
- " }",
86
- "}",
87
- ""
88
- ]
89
- },
90
- "flu.lessPage": {
91
- "prefix": "lessPage",
92
- "description": "Stateless 页面(三段分层 + 增量包裹)",
93
- "body": [
94
- "import 'package:flutter/material.dart';",
95
- "",
96
- "class ${1:Name}Page extends StatelessWidget {",
97
- " // 1. 参数与配置",
98
- " /// 构造函数",
99
- " const ${1:Name}Page({super.key});",
100
- "",
101
- " // 2. UI 构建",
102
- " @override",
103
- " Widget build(BuildContext context) {",
104
- " final appBar = _buildAppBar(context);",
105
- " final body = _buildBody(context);",
106
- " return Scaffold(appBar: appBar, body: body);",
107
- " }",
108
- "",
109
- " /// 主容器(style: incremental-wrapping)",
110
- " Widget _buildBody(BuildContext context) {",
111
- " Widget w = const SizedBox.shrink();",
112
- " w = Padding(padding: const EdgeInsets.all(16), child: w);",
113
- " return w;",
114
- " }",
115
- "",
116
- " AppBar _buildAppBar(BuildContext context) {",
117
- " return AppBar(title: const Text('${2:Title}'));",
118
- " }",
119
- "",
120
- " // 3. 辅助方法",
121
- " String _formatTitle(String text) => text;",
122
- "}",
123
- ""
124
- ]
125
- },
126
- "flu.stWidget": {
127
- "prefix": "stWidget",
128
- "description": "Stateful 组件(四段分层 + 增量包裹)",
129
- "body": [
130
- "import 'package:flutter/material.dart';",
131
- "",
132
- "class ${1:Name}Widget extends StatefulWidget {",
133
- " /// 构造函数",
134
- " const ${1:Name}Widget({super.key});",
135
- "",
136
- " @override",
137
- " State<${1:Name}Widget> createState() => _${1:Name}WidgetState();",
138
- "}",
139
- "",
140
- "class _${1:Name}WidgetState extends State<${1:Name}Widget> {",
141
- " // 1. 状态定义",
142
- "",
143
- " // 2. 生命周期",
144
- " @override",
145
- " void initState() {",
146
- " super.initState();",
147
- " }",
148
- "",
149
- " @override",
150
- " void dispose() {",
151
- " super.dispose();",
152
- " }",
153
- "",
154
- " // 3. UI 构建",
155
- " @override",
156
- " Widget build(BuildContext context) {",
157
- " Widget w = _buildBody();",
158
- " return w;",
159
- " }",
160
- "",
161
- " // section: Body",
162
- " Widget _buildBody() {",
163
- " Widget w = const SizedBox.shrink();",
164
- " w = Padding(padding: const EdgeInsets.all(12), child: w);",
165
- " return w;",
166
- " }",
167
- "",
168
- " // 4. 事件与逻辑",
169
- "",
170
- " String _format(String s) => s;",
171
- "}",
172
- ""
173
- ]
174
- },
175
- "flu.lessWidget": {
176
- "prefix": "lessWidget",
177
- "description": "Stateless 组件(三段分层 + 增量包裹)",
178
- "body": [
179
- "import 'package:flutter/material.dart';",
180
- "",
181
- "class ${1:Name}Widget extends StatelessWidget {",
182
- " /// 构造函数",
183
- " const ${1:Name}Widget({super.key});",
184
- "",
185
- " // 1. UI 构建",
186
- " @override",
187
- " Widget build(BuildContext context) {",
188
- " Widget w = _buildBody();",
189
- " return w;",
190
- " }",
191
- "",
192
- " // section: Body",
193
- " Widget _buildBody() {",
194
- " Widget w = const SizedBox.shrink();",
195
- " w = Padding(padding: const EdgeInsets.all(12), child: w);",
196
- " return w;",
197
- " }",
198
- "",
199
- " // 2. 辅助方法",
200
- " String _format(String s) => s;",
201
- "}",
202
- ""
203
- ]
204
- },
205
- "flu.stComponent": {
206
- "prefix": "stComponent",
207
- "description": "Stateful 通用组件",
208
- "body": [
209
- "import 'package:flutter/material.dart';",
210
- "",
211
- "class ${1:Name}Component extends StatefulWidget {",
212
- " const ${1:Name}Component({super.key});",
213
- "",
214
- " @override",
215
- " State<${1:Name}Component> createState() => _${1:Name}ComponentState();",
216
- "}",
217
- "",
218
- "class _${1:Name}ComponentState extends State<${1:Name}Component> {",
219
- " // 1. 状态定义",
220
- "",
221
- " // 2. UI 构建",
222
- " @override",
223
- " Widget build(BuildContext context) {",
224
- " Widget w = _buildBody(context);",
225
- " return w;",
226
- " }",
227
- "",
228
- " Widget _buildBody(BuildContext context) {",
229
- " Widget w = const Text('${1:Name}Component');",
230
- " w = Container(padding: const EdgeInsets.all(16), child: w);",
231
- " return w;",
232
- " }",
233
- "}",
234
- ""
235
- ]
236
- },
237
- "flu.component": {
238
- "prefix": "component",
239
- "description": "通用组件(模块内或共享)",
240
- "body": [
241
- "import 'package:flutter/material.dart';",
242
- "",
243
- "class ${1:Name}Component extends StatelessWidget {",
244
- " // 1. 参数与配置",
245
- " /// 构造函数",
246
- " const ${1:Name}Component({super.key});",
247
- "",
248
- " // 2. UI 构建",
249
- " @override",
250
- " Widget build(BuildContext context) {",
251
- " Widget w = _buildBody(context);",
252
- " return w;",
253
- " }",
254
- "",
255
- " // 3. 内部实现",
256
- " Widget _buildBody(BuildContext context) {",
257
- " Widget w = const Text('${1:Name}Component');",
258
- " w = Container(padding: const EdgeInsets.all(16), child: w);",
259
- " return w;",
260
- " }",
261
- "}",
262
- ""
263
- ]
264
- },
265
- "flu.viewmodel": {
266
- "prefix": "viewmodel",
267
- "description": "ViewModel(使用 BaseViewModel)",
268
- "body": [
269
- "import '../base/base_viewmodel.dart';",
270
- "",
271
- "class ${1:Name}ViewModel extends BaseViewModel {",
272
- " // 1. 初始化",
273
- " @override",
274
- " Future<void> onInit() async {",
275
- " await super.onInit();",
276
- " // TODO: 初始化逻辑",
277
- " }",
278
- "",
279
- " // 2. 公共方法",
280
- " Future<void> refreshData() async {",
281
- " // TODO: 刷新逻辑",
282
- " }",
283
- "}",
284
- ""
285
- ]
286
- },
287
- "flu.service": {
288
- "prefix": "service",
289
- "description": "Generic Service",
290
- "body": [
291
- "class ${1:Name}Service {",
292
- " // 1. 配置",
293
- "",
294
- " // 2. 业务方法",
295
- " Future<void> doSomething() async {",
296
- " // TODO: implement",
297
- " }",
298
- "}",
299
- ""
300
- ]
301
- },
302
- "flu.model": {
303
- "prefix": "model",
304
- "description": "基础 Model(JSON 序列化)",
305
- "body": [
306
- "class ${1:Name}Model {",
307
- " // 1. 属性",
308
- " final String id;",
309
- " final String name;",
310
- " final DateTime createdAt;",
311
- "",
312
- " // 2. 构造函数",
313
- " ${1:Name}Model({",
314
- " required this.id,",
315
- " required this.name,",
316
- " required this.createdAt,",
317
- " });",
318
- "",
319
- " // 3. 序列化",
320
- " factory ${1:Name}Model.fromJson(Map<String, dynamic> json) {",
321
- " return ${1:Name}Model(",
322
- " id: json['id'] as String,",
323
- " name: json['name'] as String,",
324
- " createdAt: DateTime.parse(json['created_at'] as String),",
325
- " );",
326
- " }",
327
- "",
328
- " Map<String, dynamic> toJson() {",
329
- " return {",
330
- " 'id': id,",
331
- " 'name': name,",
332
- " 'created_at': createdAt.toIso8601String(),",
333
- " };",
334
- " }",
335
- "}",
336
- ""
337
- ]
338
- },
339
- "flu.listPage": {
340
- "prefix": "listPage",
341
- "description": "List Page (BaseListPage)",
342
- "body": [
343
- "import 'package:flutter/material.dart';",
344
- "import '../base/base_list_page.dart';",
345
- "import '../viewmodels/${3:${1/(.*)/${1:/downcase}/}_viewmodel}.dart';",
346
- "import '../models/${4:${2/(.*)/${1:/downcase}/}_model}.dart';",
347
- "",
348
- "class ${1:Name}Page extends BaseListPage<${2:ModelName}, ${1:Name}ViewModel> {",
349
- " const ${1:Name}Page({super.key});",
350
- "",
351
- " @override",
352
- " State<${1:Name}Page> createState() => _${1:Name}PageState();",
353
- "}",
354
- "",
355
- "class _${1:Name}PageState extends BaseListPageState<${2:ModelName}, ${1:Name}ViewModel, ${1:Name}Page> {",
356
- " // 1. UI 配置",
357
- " @override",
358
- " String get title => '${5:Title}';",
359
- "",
360
- " // 2. ViewModel",
361
- " @override",
362
- " ${1:Name}ViewModel createViewModel() => ${1:Name}ViewModel();",
363
- "",
364
- " // 3. UI 构建",
365
- " @override",
366
- " Widget buildItem(BuildContext context, ${2:ModelName} item, int index) {",
367
- " return ListTile(",
368
- " title: Text(item.toString()),",
369
- " );",
370
- " }",
371
- "}"
372
- ]
373
- },
374
- "flu.listViewModel": {
375
- "prefix": "listViewModel",
376
- "description": "List ViewModel (BaseListViewModel)",
377
- "body": [
378
- "import '../base/base_list_viewmodel.dart';",
379
- "import '../models/${2:${1/(.*)/${1:/downcase}/}_model}.dart';",
380
- "",
381
- "class ${1:Name}ViewModel extends BaseListViewModel<${2:${1:Name}Model}> {",
382
- " // 1. 核心业务",
383
- " @override",
384
- " Future<List<${2:${1:Name}Model}>> fetchPage({required int page, required int pageSize}) async {",
385
- " // TODO: Load data from service",
386
- " await Future.delayed(const Duration(seconds: 1));",
387
- " return [];",
388
- " }",
389
- "}"
390
- ]
391
- }
392
- }