flutterflow-mcp
Advanced tools
@@ -87,2 +87,9 @@ /** | ||
| executecallbackaction: "03-components.md", | ||
| // Internationalization | ||
| translation: "01-project-files.md", | ||
| translations: "01-project-files.md", | ||
| i18n: "01-project-files.md", | ||
| localization: "01-project-files.md", | ||
| translatabletext: "01-project-files.md", | ||
| languages: "01-project-files.md", | ||
| // Universal patterns | ||
@@ -89,0 +96,0 @@ inputvalue: "README.md", |
@@ -39,3 +39,3 @@ # FlutterFlow Project Structure | ||
| | `agent/id-XXX` | AI agent configuration | | ||
| | `custom-file/id-<TYPE>` | Custom file configs for native platform files. Known types: `MAIN` (main.dart startup actions), `ANDROID_MANIFEST` (XML injection hooks for AndroidManifest.xml), `PROGUARD` (ProGuard rule injection for proguard-rules.pro), `BUILD_GRADLE` (Gradle plugin/dependency/repository injection for build.gradle). Only appear after enabled in FF editor. Sub-file `custom-file/id-MAIN/custom-file-code.dart` contains generated Dart source. | | ||
| | `custom-file/id-<TYPE>` | Custom file configs for native platform files. Known types: `MAIN` (main.dart startup actions), `ANDROID_MANIFEST` (XML injection hooks for AndroidManifest.xml), `INFO_PLIST` (plist property injection for Info.plist), `ENTITLEMENTS` (iOS capability entitlements for Runner.entitlements), `APP_DELEGATE` (Swift code injection for AppDelegate.swift), `PROGUARD` (ProGuard rule injection for proguard-rules.pro), `BUILD_GRADLE` (Gradle plugin/dependency/repository injection for build.gradle). Only appear after enabled in FF editor. Sub-file `custom-file/id-<TYPE>/custom-file-code.dart` contains generated source. | | ||
| | `environment-settings` | Per-environment configuration values (API URLs, keys) | | ||
@@ -42,0 +42,0 @@ | `dependencies` | FlutterFlow library package dependencies | |
@@ -338,2 +338,22 @@ # Components | ||
| **Translatable text (i18n):** | ||
| Use `translatableText` inside `inputValue` to pass a string that should be translated at runtime based on the app's current locale. This is the correct way to make component parameter text translatable. | ||
| ```yaml | ||
| paramIdentifier: | ||
| name: title | ||
| key: p1titl | ||
| inputValue: | ||
| translatableText: | ||
| translationIdentifier: | ||
| key: ms01ttl1 # References languages/translation/id-ms01ttl1 | ||
| textValue: | ||
| inputValue: Histamine / Low DAO # English default / editor preview | ||
| ``` | ||
| Each `translationIdentifier.key` must have a corresponding `languages/translation/id-<key>` file with translations for all supported languages (see `01-project-files.md` for the translation file schema). | ||
| > **Note:** `translationIdentifier` is NOT valid as a direct sibling of `paramIdentifier` on a parameterPass — it must be nested inside `inputValue.translatableText`. Placing it at the wrong level causes a validation error. | ||
| --- | ||
@@ -340,0 +360,0 @@ |
@@ -834,2 +834,17 @@ # Variables and Data Binding | ||
| **Translatable text (i18n):** | ||
| Used when passing a string that should be translated at runtime based on the app's locale. Wraps `translationIdentifier` and `textValue` inside `inputValue.translatableText`. Commonly used in component parameter passes to make per-instance text translatable. | ||
| ```yaml | ||
| inputValue: | ||
| translatableText: | ||
| translationIdentifier: | ||
| key: ms01ttl1 # References languages/translation/id-ms01ttl1 | ||
| textValue: | ||
| inputValue: Histamine / Low DAO # English default | ||
| ``` | ||
| Each key must have a corresponding translation file at `languages/translation/id-<key>` with entries for all supported languages. See `01-project-files.md` for the translation file schema. | ||
| The `mostRecentInputValue` field must always stay in sync with `inputValue` when both are present. |
| # Custom Code | ||
| FlutterFlow supports four types of custom code: **Custom Actions** (async Dart functions with side effects), **Custom Functions** (pure synchronous Dart functions), **Custom Widgets** (Flutter widgets with parameters), and **AI Agents** (LLM-powered processing pipelines). Additionally, **App Action Components** provide reusable action chains that can be invoked from any page, and **Custom Files** allow overriding special project-level files like `main.dart` and `AndroidManifest.xml`. | ||
| FlutterFlow supports four types of custom code: **Custom Actions** (async Dart functions with side effects), **Custom Functions** (pure synchronous Dart functions), **Custom Widgets** (Flutter widgets with parameters), and **AI Agents** (LLM-powered processing pipelines). Additionally, **App Action Components** provide reusable action chains that can be invoked from any page, and **Custom Files** allow overriding special project-level files like `main.dart`, `AndroidManifest.xml`, `Info.plist`, `proguard-rules.pro`, and `build.gradle`. | ||
@@ -709,73 +709,18 @@ --- | ||
| Custom Files are special project-level files such as `main.dart` (the app entry point) and `AndroidManifest.xml`. Each has a metadata YAML file and a companion code file. They live under `custom-file/`. | ||
| Custom Files are special project-level files that override platform-specific configuration (e.g., `main.dart`, `AndroidManifest.xml`, `Info.plist`, `proguard-rules.pro`, `build.gradle`). Each has a metadata YAML file and a companion code file under `custom-file/`. | ||
| ### File layout | ||
| > **Full documentation:** Custom Files are documented in detail in [01-project-files.md](01-project-files.md) under the `custom-file/id-*` sections, since they are project-level configuration files. See those sections for complete schemas, hook types, parameters, API capabilities, and warnings. | ||
| ``` | ||
| custom-file/ | ||
| id-MAIN.yaml # Metadata for main.dart | ||
| id-MAIN/custom-file-code.dart.yaml # main.dart Dart code | ||
| id-ANDROID_MANIFEST.yaml # Metadata for AndroidManifest.xml | ||
| id-ANDROID_MANIFEST/custom-file-code.dart.yaml # AndroidManifest.xml content | ||
| ``` | ||
| ### Quick reference | ||
| ### MAIN metadata (id-MAIN.yaml) | ||
| | Type | File key | Description | | ||
| |------|----------|-------------| | ||
| | `MAIN` | `custom-file/id-MAIN` | App entry point (`main.dart`) — lifecycle actions (INITIAL/FINAL) | | ||
| | `ANDROID_MANIFEST` | `custom-file/id-ANDROID_MANIFEST` | Android manifest — XML injection hooks, template parameters | | ||
| | `INFO_PLIST` | `custom-file/id-INFO_PLIST` | iOS Info.plist — property injection hooks, template parameters | | ||
| | `ENTITLEMENTS` | `custom-file/id-ENTITLEMENTS` | iOS Runner.entitlements — capability entitlement injection | | ||
| | `APP_DELEGATE` | `custom-file/id-APP_DELEGATE` | iOS AppDelegate.swift — import and initialization code injection | | ||
| | `PROGUARD` | `custom-file/id-PROGUARD` | ProGuard rules — rule injection hooks | | ||
| | `BUILD_GRADLE` | `custom-file/id-BUILD_GRADLE` | Gradle config — plugin/dependency/repository injection hooks | | ||
| ```yaml | ||
| type: MAIN | ||
| isUnlocked: false | ||
| actions: | ||
| - type: FINAL_ACTION | ||
| identifier: | ||
| name: initializeUlink | ||
| key: t6snt | ||
| projectId: ulink-21sajt | ||
| description: "" | ||
| ``` | ||
| ### ANDROID_MANIFEST metadata (id-ANDROID_MANIFEST.yaml) | ||
| ```yaml | ||
| type: ANDROID_MANIFEST | ||
| identifier: | ||
| name: AndroidManifest.xml | ||
| isUnlocked: true | ||
| parameters: | ||
| 29c3b7b9-afe7-4429-9d20-abb2e09f7a40: | ||
| parameter: | ||
| identifier: | ||
| name: ulinkDomain | ||
| dataType: | ||
| scalarType: String | ||
| value: | ||
| variable: | ||
| source: DEV_ENVIRONMENT | ||
| baseVariable: | ||
| environmentValue: | ||
| identifier: | ||
| name: ulinkDomain | ||
| key: eji5p6 | ||
| description: "" | ||
| ``` | ||
| ### Definition fields | ||
| | Field | Required | Description | | ||
| |-------|----------|-------------| | ||
| | `type` | Yes | File type: `MAIN` or `ANDROID_MANIFEST` | | ||
| | `identifier` | For ANDROID_MANIFEST | `name` of the file | | ||
| | `isUnlocked` | No | Whether the file is editable (default: false) | | ||
| | `actions` | No | List of final actions (library initializers) that run at startup | | ||
| | `parameters` | No | Template parameter substitutions for the code file | | ||
| | `description` | No | Human-readable description | | ||
| ### Code files | ||
| - **MAIN:** `custom-file/id-MAIN/custom-file-code.dart.yaml` contains the full `main.dart` with imports, `main()` function, Firebase/Supabase initialization, and library init calls. | ||
| - **ANDROID_MANIFEST:** `custom-file/id-ANDROID_MANIFEST/custom-file-code.dart.yaml` contains the XML manifest with template placeholders (e.g., `{{unlinkDomain}}`, `{{ulink-21sajt.ulinkSchema}}`). Parameters in metadata map to these placeholders. | ||
| ### Parameter substitution | ||
| Parameters in ANDROID_MANIFEST metadata define template variables. Each key is a UUID, and the value specifies where the parameter's value comes from (typically `DEV_ENVIRONMENT`). These get substituted into the code file's template placeholders at build time. | ||
| --- | ||
@@ -792,2 +737,2 @@ | ||
| | App Action Component | `app-action-components/id-<key>.yaml` | N/A (actions are inline) | `app-action-components/` | | ||
| | Custom File | `custom-file/id-<TYPE>.yaml` | `custom-file/id-<TYPE>/custom-file-code.dart.yaml` | `custom-file/` | | ||
| | Custom File | `custom-file/id-<TYPE>` | `custom-file/id-<TYPE>/custom-file-code.dart` | `custom-file/` | |
+1
-1
| { | ||
| "name": "flutterflow-mcp", | ||
| "version": "0.3.4", | ||
| "version": "0.3.5", | ||
| "description": "MCP server for the FlutterFlow Project API — AI-assisted FlutterFlow development through Claude and other MCP-compatible clients", | ||
@@ -5,0 +5,0 @@ "type": "module", |
Sorry, the diff of this file is too big to display
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
601208
3.27%5397
0.13%