flutterflow-mcp 0.1.0
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.
- package/README.md +124 -0
- package/build/api/flutterflow.d.ts +11 -0
- package/build/api/flutterflow.js +61 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +54 -0
- package/build/prompts/dev-workflow.d.ts +2 -0
- package/build/prompts/dev-workflow.js +68 -0
- package/build/prompts/generate-page.d.ts +2 -0
- package/build/prompts/generate-page.js +36 -0
- package/build/prompts/inspect-project.d.ts +2 -0
- package/build/prompts/inspect-project.js +30 -0
- package/build/prompts/modify-component.d.ts +2 -0
- package/build/prompts/modify-component.js +39 -0
- package/build/resources/docs.d.ts +2 -0
- package/build/resources/docs.js +76 -0
- package/build/resources/projects.d.ts +3 -0
- package/build/resources/projects.js +60 -0
- package/build/tools/find-component-usages.d.ts +7 -0
- package/build/tools/find-component-usages.js +225 -0
- package/build/tools/find-page-navigations.d.ts +7 -0
- package/build/tools/find-page-navigations.js +228 -0
- package/build/tools/get-component-summary.d.ts +22 -0
- package/build/tools/get-component-summary.js +193 -0
- package/build/tools/get-page-by-name.d.ts +3 -0
- package/build/tools/get-page-by-name.js +56 -0
- package/build/tools/get-page-summary.d.ts +22 -0
- package/build/tools/get-page-summary.js +220 -0
- package/build/tools/get-yaml-docs.d.ts +6 -0
- package/build/tools/get-yaml-docs.js +217 -0
- package/build/tools/get-yaml.d.ts +3 -0
- package/build/tools/get-yaml.js +47 -0
- package/build/tools/list-files.d.ts +3 -0
- package/build/tools/list-files.js +30 -0
- package/build/tools/list-pages.d.ts +25 -0
- package/build/tools/list-pages.js +101 -0
- package/build/tools/list-projects.d.ts +3 -0
- package/build/tools/list-projects.js +19 -0
- package/build/tools/sync-project.d.ts +3 -0
- package/build/tools/sync-project.js +144 -0
- package/build/tools/update-yaml.d.ts +3 -0
- package/build/tools/update-yaml.js +24 -0
- package/build/tools/validate-yaml.d.ts +3 -0
- package/build/tools/validate-yaml.js +22 -0
- package/build/utils/cache.d.ts +48 -0
- package/build/utils/cache.js +162 -0
- package/build/utils/decode-yaml.d.ts +7 -0
- package/build/utils/decode-yaml.js +31 -0
- package/build/utils/page-summary/action-summarizer.d.ts +9 -0
- package/build/utils/page-summary/action-summarizer.js +291 -0
- package/build/utils/page-summary/formatter.d.ts +13 -0
- package/build/utils/page-summary/formatter.js +121 -0
- package/build/utils/page-summary/node-extractor.d.ts +17 -0
- package/build/utils/page-summary/node-extractor.js +207 -0
- package/build/utils/page-summary/tree-walker.d.ts +6 -0
- package/build/utils/page-summary/tree-walker.js +55 -0
- package/build/utils/page-summary/types.d.ts +56 -0
- package/build/utils/page-summary/types.js +4 -0
- package/build/utils/parse-folders.d.ts +9 -0
- package/build/utils/parse-folders.js +29 -0
- package/docs/ff-yaml/00-overview.md +137 -0
- package/docs/ff-yaml/01-project-files.md +513 -0
- package/docs/ff-yaml/02-pages.md +572 -0
- package/docs/ff-yaml/03-components.md +413 -0
- package/docs/ff-yaml/04-widgets/README.md +122 -0
- package/docs/ff-yaml/04-widgets/button.md +444 -0
- package/docs/ff-yaml/04-widgets/container.md +358 -0
- package/docs/ff-yaml/04-widgets/dropdown.md +579 -0
- package/docs/ff-yaml/04-widgets/form.md +256 -0
- package/docs/ff-yaml/04-widgets/image.md +276 -0
- package/docs/ff-yaml/04-widgets/layout.md +355 -0
- package/docs/ff-yaml/04-widgets/misc.md +553 -0
- package/docs/ff-yaml/04-widgets/text-field.md +326 -0
- package/docs/ff-yaml/04-widgets/text.md +302 -0
- package/docs/ff-yaml/05-actions.md +843 -0
- package/docs/ff-yaml/06-variables.md +834 -0
- package/docs/ff-yaml/07-data.md +591 -0
- package/docs/ff-yaml/08-custom-code.md +715 -0
- package/docs/ff-yaml/09-theming.md +592 -0
- package/docs/ff-yaml/10-editing-guide.md +454 -0
- package/docs/ff-yaml/README.md +105 -0
- package/package.json +55 -0
- package/skills/ff-widget-patterns.md +141 -0
- package/skills/ff-yaml-dev.md +58 -0
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
# Layout Widgets: Column, Row, Stack, Wrap
|
|
2
|
+
|
|
3
|
+
## Column
|
|
4
|
+
|
|
5
|
+
### Minimal Example
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
key: Column_xxxxxxxx
|
|
9
|
+
type: Column
|
|
10
|
+
props:
|
|
11
|
+
column:
|
|
12
|
+
listSpacing: {}
|
|
13
|
+
padding: {}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Full Schema
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
key: Column_xxxxxxxx
|
|
20
|
+
type: Column
|
|
21
|
+
props:
|
|
22
|
+
column:
|
|
23
|
+
mainAxisAlignment: main_axis_space_between # Main axis distribution (see enum)
|
|
24
|
+
crossAxisAlignment: cross_axis_center # Cross axis alignment (see enum)
|
|
25
|
+
scrollable: true # Enable vertical scrolling
|
|
26
|
+
primary: true # Whether this is primary scroll view
|
|
27
|
+
listSpacing: # Spacing between children
|
|
28
|
+
applyStartEndSpace: true # Add spacing before first / after last child
|
|
29
|
+
spacingValue:
|
|
30
|
+
inputValue: 32 # Gap in px between children
|
|
31
|
+
startSpacingValue: # Explicit start spacing (alternative to applyStartEndSpace)
|
|
32
|
+
inputValue: 20
|
|
33
|
+
endSpacingValue: # Explicit end spacing
|
|
34
|
+
inputValue: 60
|
|
35
|
+
minSizeValue: # Whether column shrinks to min size
|
|
36
|
+
inputValue: false # false = take full available height
|
|
37
|
+
mostRecentInputValue: false
|
|
38
|
+
padding: # Inner padding
|
|
39
|
+
leftValue:
|
|
40
|
+
inputValue: 32
|
|
41
|
+
topValue:
|
|
42
|
+
inputValue: 32
|
|
43
|
+
rightValue:
|
|
44
|
+
inputValue: 32
|
|
45
|
+
bottomValue:
|
|
46
|
+
inputValue: 32
|
|
47
|
+
responsiveVisibility: {}
|
|
48
|
+
opacity:
|
|
49
|
+
opacityValue:
|
|
50
|
+
inputValue: 1
|
|
51
|
+
mostRecentInputValue: 1
|
|
52
|
+
animatedOpacity: {}
|
|
53
|
+
parameterValues: {}
|
|
54
|
+
valueKey: {}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Field Reference
|
|
58
|
+
|
|
59
|
+
| Field | Type | Required | Notes |
|
|
60
|
+
|-------|------|----------|-------|
|
|
61
|
+
| `mainAxisAlignment` | enum | No | Vertical distribution of children |
|
|
62
|
+
| `crossAxisAlignment` | enum | No | Horizontal alignment of children |
|
|
63
|
+
| `scrollable` | bool | No | Enable vertical scrolling |
|
|
64
|
+
| `primary` | bool | No | Primary scroll controller |
|
|
65
|
+
| `listSpacing.spacingValue.inputValue` | number | No | Gap between children in px |
|
|
66
|
+
| `listSpacing.applyStartEndSpace` | bool | No | Space before first/after last child |
|
|
67
|
+
| `listSpacing.startSpacingValue.inputValue` | number | No | Explicit start spacing in px |
|
|
68
|
+
| `listSpacing.endSpacingValue.inputValue` | number | No | Explicit end spacing in px |
|
|
69
|
+
| `minSizeValue.inputValue` | bool | No | `false` = fill height, `true` = shrink-wrap |
|
|
70
|
+
|
|
71
|
+
> **Warning:** There is no `mainAxisSize` field on Column. Use `minSizeValue: { inputValue: true }` for shrink-to-content behavior (equivalent to Flutter's `MainAxisSize.min`). Adding `mainAxisSize` will cause a validation error.
|
|
72
|
+
|
|
73
|
+
### mainAxisAlignment Values (Column = vertical, Row = horizontal)
|
|
74
|
+
|
|
75
|
+
| Value | Description |
|
|
76
|
+
|-------|-------------|
|
|
77
|
+
| `main_axis_start` | Pack children at start |
|
|
78
|
+
| `main_axis_end` | Pack children at end |
|
|
79
|
+
| `main_axis_center` | Center children |
|
|
80
|
+
| `main_axis_space_between` | Even spacing, no edge space |
|
|
81
|
+
| `main_axis_space_around` | Even spacing, half edge space |
|
|
82
|
+
| `main_axis_space_evenly` | Even spacing including edges |
|
|
83
|
+
|
|
84
|
+
### crossAxisAlignment Values (Column = horizontal, Row = vertical)
|
|
85
|
+
|
|
86
|
+
| Value | Description |
|
|
87
|
+
|-------|-------------|
|
|
88
|
+
| `cross_axis_start` | Align to start (left for Column, top for Row) |
|
|
89
|
+
| `cross_axis_end` | Align to end |
|
|
90
|
+
| `cross_axis_center` | Center on cross axis |
|
|
91
|
+
| `cross_axis_stretch` | Stretch to fill cross axis |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Row
|
|
96
|
+
|
|
97
|
+
### Minimal Example
|
|
98
|
+
|
|
99
|
+
```yaml
|
|
100
|
+
key: Row_xxxxxxxx
|
|
101
|
+
type: Row
|
|
102
|
+
props:
|
|
103
|
+
row:
|
|
104
|
+
listSpacing: {}
|
|
105
|
+
padding: {}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Full Schema
|
|
109
|
+
|
|
110
|
+
```yaml
|
|
111
|
+
key: Row_xxxxxxxx
|
|
112
|
+
type: Row
|
|
113
|
+
props:
|
|
114
|
+
row:
|
|
115
|
+
mainAxisAlignment: main_axis_center # Horizontal distribution
|
|
116
|
+
crossAxisAlignment: cross_axis_center # Vertical alignment
|
|
117
|
+
listSpacing: # Spacing between children
|
|
118
|
+
spacingValue:
|
|
119
|
+
inputValue: 8
|
|
120
|
+
padding: {}
|
|
121
|
+
responsiveVisibility: {}
|
|
122
|
+
opacity:
|
|
123
|
+
opacityValue:
|
|
124
|
+
inputValue: 1
|
|
125
|
+
mostRecentInputValue: 1
|
|
126
|
+
parameterValues: {}
|
|
127
|
+
valueKey: {}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Field Reference
|
|
131
|
+
|
|
132
|
+
| Field | Type | Required | Notes |
|
|
133
|
+
|-------|------|----------|-------|
|
|
134
|
+
| `mainAxisAlignment` | enum | No | Horizontal distribution |
|
|
135
|
+
| `crossAxisAlignment` | enum | No | Vertical alignment |
|
|
136
|
+
| `listSpacing.spacingValue.inputValue` | number | No | Gap between children in px |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Stack
|
|
141
|
+
|
|
142
|
+
### Minimal Example
|
|
143
|
+
|
|
144
|
+
```yaml
|
|
145
|
+
key: Stack_xxxxxxxx
|
|
146
|
+
type: Stack
|
|
147
|
+
props:
|
|
148
|
+
stack:
|
|
149
|
+
dimensions: {}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Full Schema
|
|
153
|
+
|
|
154
|
+
```yaml
|
|
155
|
+
key: Stack_xxxxxxxx
|
|
156
|
+
type: Stack
|
|
157
|
+
props:
|
|
158
|
+
stack:
|
|
159
|
+
dimensions: {} # Stack size constraints
|
|
160
|
+
childAlignment: # Default alignment for children
|
|
161
|
+
xValue:
|
|
162
|
+
inputValue: 0 # -1 (left) to 1 (right)
|
|
163
|
+
yValue:
|
|
164
|
+
inputValue: 1 # -1 (top) to 1 (bottom)
|
|
165
|
+
responsiveVisibility: {}
|
|
166
|
+
opacity:
|
|
167
|
+
opacityValue:
|
|
168
|
+
inputValue: 1
|
|
169
|
+
mostRecentInputValue: 1
|
|
170
|
+
parameterValues: {}
|
|
171
|
+
valueKey: {}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Field Reference
|
|
175
|
+
|
|
176
|
+
| Field | Type | Required | Notes |
|
|
177
|
+
|-------|------|----------|-------|
|
|
178
|
+
| `dimensions` | object | No | Width/height constraints (same as Container) |
|
|
179
|
+
| `childAlignment.xValue.inputValue` | number | No | Default horizontal alignment (-1 to 1) |
|
|
180
|
+
| `childAlignment.yValue.inputValue` | number | No | Default vertical alignment (-1 to 1) |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Wrap
|
|
185
|
+
|
|
186
|
+
### Minimal Example
|
|
187
|
+
|
|
188
|
+
```yaml
|
|
189
|
+
key: Wrap_xxxxxxxx
|
|
190
|
+
type: Wrap
|
|
191
|
+
props:
|
|
192
|
+
wrap:
|
|
193
|
+
direction: FF_AXIS_HORIZONTAL
|
|
194
|
+
spacingValue:
|
|
195
|
+
inputValue: 16
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Full Schema
|
|
199
|
+
|
|
200
|
+
```yaml
|
|
201
|
+
key: Wrap_xxxxxxxx
|
|
202
|
+
type: Wrap
|
|
203
|
+
props:
|
|
204
|
+
padding:
|
|
205
|
+
type: FF_PADDING_ONLY
|
|
206
|
+
alignment: # Overall alignment of wrap widget
|
|
207
|
+
xValue:
|
|
208
|
+
inputValue: 0
|
|
209
|
+
mostRecentInputValue: 0
|
|
210
|
+
wrap:
|
|
211
|
+
childAlignment: wrap_center # Alignment of children within a run
|
|
212
|
+
crossAxisAlignment: wrap_cross_center # Cross axis alignment within runs
|
|
213
|
+
direction: FF_AXIS_HORIZONTAL # FF_AXIS_HORIZONTAL or FF_AXIS_VERTICAL
|
|
214
|
+
runAlignment: wrap_center # Alignment of runs within the wrap
|
|
215
|
+
verticalDirection: FF_VERTICAL_DIRECTION_DOWN # FF_VERTICAL_DIRECTION_DOWN or FF_VERTICAL_DIRECTION_UP
|
|
216
|
+
clipBehavior: FF_CLIP_NONE # FF_CLIP_NONE or FF_CLIP_HARD_EDGE
|
|
217
|
+
spacingValue: # Spacing between children in main axis
|
|
218
|
+
inputValue: 16
|
|
219
|
+
mostRecentInputValue: 16
|
|
220
|
+
runSpacingValue: # Spacing between runs
|
|
221
|
+
inputValue: 16
|
|
222
|
+
responsiveVisibility: {}
|
|
223
|
+
opacity:
|
|
224
|
+
opacityValue:
|
|
225
|
+
inputValue: 1
|
|
226
|
+
animatedOpacity: {}
|
|
227
|
+
valueKey: {}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Field Reference
|
|
231
|
+
|
|
232
|
+
| Field | Type | Required | Notes |
|
|
233
|
+
|-------|------|----------|-------|
|
|
234
|
+
| `direction` | enum | No | `FF_AXIS_HORIZONTAL` or `FF_AXIS_VERTICAL` |
|
|
235
|
+
| `childAlignment` | enum | No | `wrap_start`, `wrap_center`, `wrap_end`, `wrap_space_between`, `wrap_space_around`, `wrap_space_evenly` |
|
|
236
|
+
| `crossAxisAlignment` | enum | No | `wrap_cross_start`, `wrap_cross_center`, `wrap_cross_end` |
|
|
237
|
+
| `runAlignment` | enum | No | Same values as `childAlignment` |
|
|
238
|
+
| `verticalDirection` | enum | No | `FF_VERTICAL_DIRECTION_DOWN` or `FF_VERTICAL_DIRECTION_UP` |
|
|
239
|
+
| `clipBehavior` | enum | No | `FF_CLIP_NONE` or `FF_CLIP_HARD_EDGE` |
|
|
240
|
+
| `spacingValue.inputValue` | number | No | Main axis gap between children |
|
|
241
|
+
| `runSpacingValue.inputValue` | number | No | Gap between rows/columns |
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Real Examples
|
|
246
|
+
|
|
247
|
+
**Scrollable column with even spacing:**
|
|
248
|
+
```yaml
|
|
249
|
+
key: Column_gy6ake8z
|
|
250
|
+
type: Column
|
|
251
|
+
props:
|
|
252
|
+
column:
|
|
253
|
+
crossAxisAlignment: cross_axis_center
|
|
254
|
+
scrollable: true
|
|
255
|
+
listSpacing:
|
|
256
|
+
applyStartEndSpace: true
|
|
257
|
+
spacingValue:
|
|
258
|
+
inputValue: 32
|
|
259
|
+
minSizeValue:
|
|
260
|
+
inputValue: false
|
|
261
|
+
padding:
|
|
262
|
+
leftValue:
|
|
263
|
+
inputValue: 32
|
|
264
|
+
topValue:
|
|
265
|
+
inputValue: 32
|
|
266
|
+
rightValue:
|
|
267
|
+
inputValue: 32
|
|
268
|
+
bottomValue:
|
|
269
|
+
inputValue: 32
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Column with space-between and left alignment:**
|
|
273
|
+
```yaml
|
|
274
|
+
key: Column_r1vldyls
|
|
275
|
+
type: Column
|
|
276
|
+
props:
|
|
277
|
+
column:
|
|
278
|
+
mainAxisAlignment: main_axis_space_between
|
|
279
|
+
crossAxisAlignment: cross_axis_start
|
|
280
|
+
scrollable: false
|
|
281
|
+
primary: true
|
|
282
|
+
listSpacing: {}
|
|
283
|
+
minSizeValue:
|
|
284
|
+
inputValue: true
|
|
285
|
+
mostRecentInputValue: true
|
|
286
|
+
padding:
|
|
287
|
+
type: FF_PADDING_ONLY
|
|
288
|
+
topValue:
|
|
289
|
+
inputValue: 52
|
|
290
|
+
mostRecentInputValue: 52
|
|
291
|
+
responsiveVisibility: {}
|
|
292
|
+
opacity:
|
|
293
|
+
opacityValue:
|
|
294
|
+
inputValue: 1
|
|
295
|
+
mostRecentInputValue: 1
|
|
296
|
+
parameterValues: {}
|
|
297
|
+
valueKey: {}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**Centered row with 8px spacing:**
|
|
301
|
+
```yaml
|
|
302
|
+
key: Row_2gm2u02q
|
|
303
|
+
type: Row
|
|
304
|
+
props:
|
|
305
|
+
row:
|
|
306
|
+
mainAxisAlignment: main_axis_center
|
|
307
|
+
listSpacing:
|
|
308
|
+
spacingValue:
|
|
309
|
+
inputValue: 8
|
|
310
|
+
padding: {}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
**Stack with bottom-center child alignment:**
|
|
314
|
+
```yaml
|
|
315
|
+
key: Stack_vmro661q
|
|
316
|
+
type: Stack
|
|
317
|
+
props:
|
|
318
|
+
stack:
|
|
319
|
+
childAlignment:
|
|
320
|
+
xValue:
|
|
321
|
+
inputValue: 0
|
|
322
|
+
yValue:
|
|
323
|
+
inputValue: 1
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
**Horizontal wrap with center alignment:**
|
|
327
|
+
```yaml
|
|
328
|
+
key: Wrap_2wvkst2l
|
|
329
|
+
type: Wrap
|
|
330
|
+
props:
|
|
331
|
+
padding:
|
|
332
|
+
type: FF_PADDING_ONLY
|
|
333
|
+
alignment:
|
|
334
|
+
xValue:
|
|
335
|
+
inputValue: 0
|
|
336
|
+
mostRecentInputValue: 0
|
|
337
|
+
wrap:
|
|
338
|
+
childAlignment: wrap_center
|
|
339
|
+
crossAxisAlignment: wrap_cross_center
|
|
340
|
+
direction: FF_AXIS_HORIZONTAL
|
|
341
|
+
runAlignment: wrap_center
|
|
342
|
+
verticalDirection: FF_VERTICAL_DIRECTION_DOWN
|
|
343
|
+
clipBehavior: FF_CLIP_NONE
|
|
344
|
+
spacingValue:
|
|
345
|
+
inputValue: 16
|
|
346
|
+
mostRecentInputValue: 16
|
|
347
|
+
runSpacingValue:
|
|
348
|
+
inputValue: 16
|
|
349
|
+
responsiveVisibility: {}
|
|
350
|
+
opacity:
|
|
351
|
+
opacityValue:
|
|
352
|
+
inputValue: 1
|
|
353
|
+
animatedOpacity: {}
|
|
354
|
+
valueKey: {}
|
|
355
|
+
```
|