You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/ff-concepts/adding-customization/custom-code.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,10 +18,12 @@ There are a few different ways to make custom code accessible in FlutterFlow:
18
18
19
19
***[Custom Functions](custom-functions.md):** Custom Dart functions that can be used to set Widget or Action properties.
20
20
***[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.
21
22
***[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.
22
23
***[Configuration Files](configuration-files.md):** You'll have the ability to edit native files for Android and iOS.
23
24
24
25
26
+
25
27
:::tip[Why Write Custom Code?]
26
28
27
29
-**Extend Functionality:** Add features that are not included in the standard FlutterFlow
Copy file name to clipboardExpand all lines: docs/ff-concepts/animations/widget_animations.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -208,7 +208,7 @@ If you notice carefully, the items appear in a staggered fashion. This can be ac
208
208
209
209
Select the item in the list and add the Slide animation.
210
210
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.
Copy file name to clipboardExpand all lines: docs/ff-concepts/design-system/design-system.md
+17-41Lines changed: 17 additions & 41 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -88,33 +88,27 @@ To add a design system from a library, start by creating the design system in a
88
88
89
89
## Import Figma Theme
90
90
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
+
:::
92
94
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.
94
96
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.
96
98
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.
98
100
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
+
:::
110
104
111
105
<div style={{
112
106
position: 'relative',
113
107
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
@@ -571,31 +565,13 @@ You can customize the following properties of each text style:
571
565
-**Color** - Set the color of the text using either the color picker or by specifying a Hex value.
572
566
-**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*.
573
567
574
-
<div style={{
575
-
position: 'relative',
576
-
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
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
+

571
+
572
+
:::tip[PLANS]
573
+
Custom Text Styles are available on the **Teams** plan and higher. Check our [**pricing plans**](https://flutterflow.io/pricing).
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.
14
14
:::
15
15
16
16
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
752
752
753
753
<p></p>
754
754
755
-
**Initialize the Branch SDK**
755
+
#### Initialize the Branch SDK
756
756
757
757
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.
758
758
759
+
<div style={{
760
+
position: 'relative',
761
+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
@@ -805,7 +831,7 @@ The `handleBranchDeeplink` action receives a `linkData` object that contains all
805
831
806
832
- **`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.
807
833
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`.
809
835
810
836
This lets you write flexible, conditional navigation logic based on what was shared.
811
837
@@ -838,7 +864,10 @@ This lets you write flexible, conditional navigation logic based on what was sha
838
864
839
865
<p></p>
840
866
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
+
:::
842
871
843
872
844
873
Use the link data from this callback to:
@@ -847,11 +876,11 @@ Use the link data from this callback to:
847
876
- Load content from Firestore using a referenced ID.
848
877
849
878
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
-
:::
853
879
854
880
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
+
:::
855
884
856
885
857
886
### Generate Link [Custom Action]
@@ -873,11 +902,17 @@ The action accepts the following parameters:
873
902
- **`description`** – (Optional) A short description of the content.
874
903
875
904
- **`metadata`** – A dynamic map of custom parameters to include with the link
- **`linkProperties`** – A dynamic map for configuring how the link behaves
879
908
(e.g., set the `feature`, `channel`, `campaign`, or `stage` for analytics).
880
909
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
+
881
916
### Branch Helper Functions
882
917
883
918
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
965
1000
</div>
966
1001
967
1002
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.
0 commit comments