Skip to content

Commit 8675fec

Browse files
Merge branch 'main' into update-misc
2 parents b063741 + 4164e3c commit 8675fec

File tree

26 files changed

+756
-91
lines changed

26 files changed

+756
-91
lines changed

docs/ff-concepts/adding-customization/code-file.md

Lines changed: 453 additions & 0 deletions
Large diffs are not rendered by default.

docs/ff-concepts/adding-customization/custom-code.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ There are a few different ways to make custom code accessible in FlutterFlow:
1818

1919
* **[Custom Functions](custom-functions.md):** Custom Dart functions that can be used to set Widget or Action properties.
2020
* **[Custom Actions](custom-actions.md):** Custom Dart functions that can be triggered by [Action Triggers](https://docs.flutterflow.io/resources/functions/action-triggers/) or used as nodes in an [Action Flow](https://docs.flutterflow.io/resources/functions/action-flow-editor#action-flow-editor). These are usually `async` functions and are able to import [custom package dependencies](#adding-a-pubspec-dependency).
21+
* **[Code File](code-file.md):** You can define custom classes, enums, and logic to manage your app’s data and behavior.
2122
* **[Custom Widgets](custom-widgets.md):** Custom Flutter widgets that can also import [custom package dependencies](#adding-a-pubspec-dependency) and be used in the same way as [Components](https://docs.flutterflow.io/resources/ui/components) throughout your project.
2223
* **[Configuration Files](configuration-files.md):** You'll have the ability to edit native files for Android and iOS.
2324

2425

26+
2527
:::tip[Why Write Custom Code?]
2628

2729
- **Extend Functionality:** Add features that are not included in the standard FlutterFlow
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

docs/ff-concepts/animations/widget_animations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ If you notice carefully, the items appear in a staggered fashion. This can be ac
208208

209209
Select the item in the list and add the Slide animation.
210210

211-
In the Delay property, open the variable menu and add a [code expression](../../resources/control-flow/functions/utility-functions.md#code-expressions) to calculate the delay value based on the item's index. For this example, we use the formula `[index] * 100`, where `index` represents the position of the item, and `100` is the delay in milliseconds. This means the first item will slide in after 100 ms, the second after 200 ms, and so on, creating a staggered animation effect.
211+
In the Delay property, open the variable menu and add a [inline function](../../resources/control-flow/functions/utility-functions.md#inline-function-code-expressions) to calculate the delay value based on the item's index. For this example, we use the formula `[index] * 100`, where `index` represents the position of the item, and `100` is the delay in milliseconds. This means the first item will slide in after 100 ms, the second after 200 ms, and so on, creating a staggered animation effect.
212212

213213
<div style={{
214214
position: 'relative',

docs/ff-concepts/design-system/design-system.md

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -88,33 +88,27 @@ To add a design system from a library, start by creating the design system in a
8888

8989
## Import Figma Theme
9090

91-
You might use Figma to design your app and build it accordingly in our builder. If you have a lot of colors and text styles, importing them manually can take some time. You can now import the whole Figma theme, which includes the colors and text styles, directly into our builder.
91+
:::tip[PLANS]
92+
Import Figma Theme feature is available on the **Teams** plan and higher. Check our [**pricing plans**](https://flutterflow.io/pricing).
93+
:::
9294

93-
:::info
95+
You can bring your Figma design system directly into your FlutterFlow project. This streamlines the design-to-development process by automatically importing colors and typography from your Figma file, helping you maintain visual consistency and reduce manual effort.
9496

95-
Before you import the Figma theme, ensure you have access to the Figma design file and [**generate the access token**](https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens).
97+
To import a Figma theme into your FlutterFlow project, go to **Theme Settings > Design System** and click **Connect To Figma**. Authenticate your account and grant access to Figma. Once connected, paste your Figma file URL to fetch the theme.
9698

97-
:::
99+
You’ll see a list of all imported colors; start mapping them to your project colors. You can filter these colors by whether they’re mapped or unmapped, and you also have the option to bulk delete any imported colors. After that, you can customize your project typography using the imported text styles.
98100

99-
To import the Figma theme:
100-
101-
1. Open the **Theme Settings > Design System**.
102-
2. Click the **Import Figma Theme** button. This will open a new popup.
103-
3. Enter your **Figma File URL** and **Personal Access Token**. The *Personal access tokens* allow us to access all of your files and data in Figma.
104-
4. Click **Import Figma Theme**.
105-
1. Now, you'll see a list of colors from your Figma file, and here you can decide which one to keep. If everything looks good to you, Click **Import & Continue**.
106-
2. You can replace the current theme colors with new/imported ones. Click on any color, and the dropdown will display all imported colors. Click on the new color to replace it. When done, click **Save & Continue**.
107-
3. If you have custom text styling in your Figma file, it will be displayed here, and you can choose which one to import. Click **Import & Continue**.
108-
4. Replace any existing style with the new one and click **Save & Finish**.
109-
5. Finally, click **Finish & Close**.
101+
:::info
102+
All imported colors are accessible anytime under **Colors > Custom Colors**.
103+
:::
110104

111105
<div style={{
112106
position: 'relative',
113107
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
114108
height: 0,
115109
width: '100%'}}>
116110
<iframe
117-
src="https://demo.arcade.software/gEry2KO5BeoZkflYHm8f?embed&show_copy_link=true"
111+
src="https://demo.arcade.software/84lqVC1ZDkq7EFFnCusm?embed&show_copy_link=true"
118112
title="Sharing a Project with a User"
119113
style={{
120114
position: 'absolute',
@@ -571,31 +565,13 @@ You can customize the following properties of each text style:
571565
- **Color** - Set the color of the text using either the color picker or by specifying a Hex value.
572566
- **Font Family** - You can change the Font Family for any style from here. Click here to set the font family from [*Google Fonts*](https://fonts.google.com/) or choose from the uploaded Custom Fonts. You can also choose whether this style is a *Primary* or *Secondary Font Family*.
573567

574-
<div style={{
575-
position: 'relative',
576-
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
577-
height: 0,
578-
width: '100%'}}>
579-
<iframe
580-
src="https://demo.arcade.software/JOD7EaZpTUgqzuvLT876?embed&show_copy_link=true"
581-
title=""
582-
style={{
583-
position: 'absolute',
584-
top: 0,
585-
left: 0,
586-
width: '100%',
587-
height: '100%',
588-
colorScheme: 'light'
589-
}}
590-
frameborder="0"
591-
loading="lazy"
592-
webkitAllowFullScreen
593-
mozAllowFullScreen
594-
allowFullScreen
595-
allow="clipboard-write">
596-
</iframe>
597-
</div>
598-
<p></p>
568+
You can also create fully custom text styles to match your design needs, going beyond the default styles like Display, Headline, or Title. Simply click the **+ Add Custom Text Style** button, a new text style will be added at the bottom, then edit the style name and customize the style properties.
569+
570+
![typography](imgs/typography.avif)
571+
572+
:::tip[PLANS]
573+
Custom Text Styles are available on the **Teams** plan and higher. Check our [**pricing plans**](https://flutterflow.io/pricing).
574+
:::
599575

600576
#### Adding responsive text styles
601577

Binary file not shown.

docs/ff-concepts/navigation-routing/deep-dynamic-linking.md

Lines changed: 85 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ keywords: [FlutterFlow, Deep Linking, Dynamic Linking, Concepts]
1010
# Deep & Dynamic Linking
1111

1212
:::danger[Support for Dynamic Links]
13-
On August 25th, 2025, Firebase Dynamic Links will be shut down. Read more about the [**announcement here**](https://firebase.google.com/support/dynamic-links-faq). It's recommended to start exploring alternative solutions like [**Branch.io**](#deep-links-with-branchio) for link management and deep linking.
13+
On August 25th, 2025, Firebase Dynamic Links will be shut down. Read more about the [**announcement here**](https://firebase.google.com/support/dynamic-links-faq). It's recommended to start exploring alternative solutions like [**Branch.io**](#branch-deeplinking-library) for link management and deep linking.
1414
:::
1515

1616
Adding deep and dynamic linking allows you to share a special type of link that takes the user right
@@ -752,10 +752,36 @@ Here’s a quick demo to show how to configure those values inside your library
752752
753753
<p></p>
754754
755-
**Initialize the Branch SDK**
755+
#### Initialize the Branch SDK
756756
757757
Open your `main.dart` file in FlutterFlow and add the `initBranch` custom action under the **Final Actions** section. This ensures the **Branch SDK** is initialized when your app launches.
758758
759+
<div style={{
760+
position: 'relative',
761+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
762+
height: 0,
763+
width: '100%'
764+
}}>
765+
<iframe
766+
src="https://demo.arcade.software/sAGP2IBXMbHMPP4rXRaQ?embed&show_copy_link=true"
767+
title=""
768+
style={{
769+
position: 'absolute',
770+
top: 0,
771+
left: 0,
772+
width: '100%',
773+
height: '100%',
774+
colorScheme: 'light'
775+
}}
776+
frameborder="0"
777+
loading="lazy"
778+
webkitAllowFullScreen
779+
mozAllowFullScreen
780+
allowFullScreen
781+
allow="clipboard-write">
782+
</iframe>
783+
</div>
784+
759785
760786
### Handle Branch Deeplink [Custom Action]
761787
@@ -805,7 +831,7 @@ The `handleBranchDeeplink` action receives a `linkData` object that contains all
805831
806832
- **`page`:** The target page or screen the link is meant to open (e.g., paywall). This is a custom parameter set by the user when generating the link.
807833
808-
- Any custom parameters added during link creation (e.g., `campaign`, `productId`, `referrer`, etc.)
834+
- Any custom parameters added during link creation (e.g., `campaign`, `productId`, `referrer`, etc.). Ensure the key and value is both `String` and `String`.
809835
810836
This lets you write flexible, conditional navigation logic based on what was shared.
811837
@@ -838,7 +864,10 @@ This lets you write flexible, conditional navigation logic based on what was sha
838864
839865
<p></p>
840866
841-
867+
:::tip
868+
Keep **"Allow Navigate Back"** checked when navigating from the Home Page to ensure it stays in the stack. This is applicable to any navigation from the Home Page, not limited to deeplinking navigation logic.
869+
This allows the user to return to the Home Page at any time and ensures that deep link logic defined there continues to work.
870+
:::
842871
843872
844873
Use the link data from this callback to:
@@ -847,11 +876,11 @@ Use the link data from this callback to:
847876
- Load content from Firestore using a referenced ID.
848877
849878
850-
:::danger[Testing Deeplinks]
851-
It’s recommended to test deep links on a **physical device**, as link verification (especially for Universal Links or App Links) may not consistently work on emulators or simulators.
852-
:::
853879
854880
881+
:::danger[Testing Deeplinks]
882+
It’s recommended to test deep links on a **physical device**, as link verification (especially for Universal Links or App Links) may not consistently work on emulators or simulators. We recommend using **[Local Run](../../testing-deployment-publishing/running-your-app/local-run.md)** to run your apps on physical devices.
883+
:::
855884
856885
857886
### Generate Link [Custom Action]
@@ -873,11 +902,17 @@ The action accepts the following parameters:
873902
- **`description`** – (Optional) A short description of the content.
874903
875904
- **`metadata`** – A dynamic map of custom parameters to include with the link
876-
(e.g., page: "imageDetails", imageRef: "abc123", etc.)
905+
(e.g., page: "imageDetails", imageRef: "abc123", etc.)
877906
878907
- **`linkProperties`** – A dynamic map for configuring how the link behaves
879908
(e.g., set the `feature`, `channel`, `campaign`, or `stage` for analytics).
880909
910+
:::warning[JSON maps]
911+
Due to a limitation, if you plan to leave map-type variables (like `metadata` or `linkProperties`) empty, you must still pass them as **empty maps**, not `null`.
912+
Ensure all keys and values are **plain strings**, avoid nested JSON or non-string types.
913+
Incorrect structure may cause the Link Generation action to fail silently.
914+
:::
915+
881916
### Branch Helper Functions
882917
883918
These functions help you safely work with deep link data, extract values, and conditionally navigate based on link metadata.
@@ -965,3 +1000,45 @@ Now in your `handleBranchDeeplink` action callback, add the additional logic to
9651000
</div>
9661001
9671002
1003+
### FAQs
1004+
1005+
<details>
1006+
<summary>Why isn't my deep link working when I navigate to another page from the home page?</summary>
1007+
1008+
It's likely because you're navigating in a way that removes the Home Page from the stack for example, disabling "**Allow Navigate Back**" in the Navigate Actions.
1009+
1010+
Since the deep link handler is defined on the Home Page, it gets disposed and can’t respond when a deep link is triggered.
1011+
1012+
✅ Solution:
1013+
1014+
Keep the Home Page in the stack by enabling "**Allow Navigate Back**" on any navigation actions from your home page (not limited to navigation logic in onLinkOpened action callback).
1015+
1016+
This ensures the Home Page stays active and can continue handling deep links.
1017+
1018+
</details>
1019+
1020+
<details>
1021+
<summary> Why is my Branch link generation failing?</summary>
1022+
1023+
This often happens because one or more of the inputs passed to the action (like `metadata` or `linkProperties` or `customParams` when using `createLinkProperties` helper function) contains invalid JSON formatting.
1024+
1025+
Branch expects these values to be passed as a map of plain `String` key-value pairs, not as nested JSON, objects, or dynamic types.
1026+
1027+
Ensure both **Key and Value's expected type** is `String` and `String` and try again.
1028+
</details>
1029+
1030+
<details>
1031+
<summary> Why isn’t deep linking working when testing from a simulator? </summary>
1032+
1033+
Deep linking, especially Universal Links and deferred deep linking may not work reliably on iOS or Android simulators/emulators due to platform limitations.
1034+
1035+
Simulator Limitations:
1036+
- **iOS:** Simulators cannot verify Universal Links properly (no App Store, limited AASA domain support).
1037+
1038+
- **Android:** Some versions fail to auto-verify App Links or handle deferred deep links without Play Services.
1039+
1040+
✅ Recommended:
1041+
1042+
Always test deep linking on a physical device for accurate behavior.
1043+
1044+
</details>

0 commit comments

Comments
 (0)