Skip to content

Commit bf25478

Browse files
authored
Merge branch 'main' into david/cloud-functions
2 parents 22ad242 + ff20228 commit bf25478

File tree

187 files changed

+4375
-713
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+4375
-713
lines changed
7.71 KB
Loading
7.45 KB
Loading

docs/accounts-billing/new-pricing-comparison.md

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

docs/accounts-billing/plan-pricing.md

Lines changed: 172 additions & 252 deletions
Large diffs are not rendered by default.

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

Lines changed: 134 additions & 36 deletions
Large diffs are not rendered by default.

docs/ff-concepts/notifications/push-notifications.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ You can add and send push notifications manually or trigger them based on user a
2727
:::info[General Prerequisites]
2828
Before you begin, ensure that you:
2929
- Complete all the steps in
30-
[**Firebase Setup**](../../ff-integrations/firebase/connect-to-firebase-setup.md).
30+
[**Firebase Setup**](../../ff-integrations/firebase/connect-to-firebase-setup.md). Note that, while setting up, make sure to follow step number 5 and 8 carefully from [**Allow FlutterFlow to Access Your Project**](../../ff-integrations/firebase/connect-to-firebase-setup.md#allow-flutterflow-to-access-your-project) section to properly add the **Cloud Functions Admin** role to **[email protected]** user.
3131
- Upgrade your Firebase project to the [**Blaze plan**](https://firebase.google.com/pricing) to enable [**Cloud Functions**](https://firebase.google.com/docs/functions), which are required specifically for FlutterFlow’s push notification setup, such as retrieving the FCM token and sending notifications trigger from FlutterFlow.
3232
:::
3333

docs/ff-integrations/ai/ai-agents.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Here are some examples of AI Agents:
2121

2222
:::info[Prerequisite]
2323
Before you begin setting up AI Agents, make sure you:
24-
1. Connect your project to Firebase by completing the [**Firebase Setup**](../firebase/connect-to-firebase-setup.md).
24+
1. Complete all the steps in [**Firebase Setup**](../firebase/connect-to-firebase-setup.md). Note that, while setting up, make sure to follow step number 5 and 8 carefully from [**Allow FlutterFlow to Access Your Project**](../firebase/connect-to-firebase-setup.md#allow-flutterflow-to-access-your-project) section to properly add the **Cloud Functions Admin** role to **[email protected]** user.
2525
2. Upgrade your Firebase project to the [**Blaze Plan**](https://firebase.google.com/pricing), as we rely on [**Firebase Cloud Functions**](https://firebase.google.com/docs/functions) to handle AI-related communication securely.
2626
:::
2727

docs/ff-integrations/maps/google-maps/google-maps-widget.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ description: Learn how to add and configure the Google Maps widget in your Flutt
55
tags: [Google Maps, Widget, Integration]
66
sidebar_position: 2
77
keywords: [FlutterFlow, Google Maps, Widget, Integration]
8+
toc_max_heading_level: 4
89
---
10+
import Tabs from '@theme/Tabs';
11+
import TabItem from '@theme/TabItem';
912

1013
# Google Maps Widget
1114

@@ -155,6 +158,70 @@ the Map**.
155158
<div class="video-container"><iframe src="https://www.loom.
156159
com/embed/1b06bfc1365f4fc68f15089d4f84d798?sid=ff33ea94-cd7f-4b4e-822e-6fe0743dbd27" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
157160

161+
#### Map Takes Gesture Preference
162+
When this is turned on, any gestures, such as zooming or dragging, will only affect the map, not the rest of the page. This is helpful if your map is inside a scrollable page, so users can interact with the map without accidentally scrolling the whole page.
163+
164+
:::info
165+
This setting is only available if **Allow Interacting** and **Allow Zooming** are turned on.
166+
:::
167+
168+
<Tabs>
169+
<TabItem value="1" label="Map Takes Gesture Preference (Disabled)" default>
170+
<div style={{
171+
position: 'relative',
172+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
173+
height: 0,
174+
width: '100%'}}>
175+
<iframe
176+
src="https://demo.arcade.software/JC6AnbIQpfSPfENrbd6s?embed&show_copy_link=true"
177+
title=""
178+
style={{
179+
position: 'absolute',
180+
top: 0,
181+
left: 0,
182+
width: '100%',
183+
height: '100%',
184+
colorScheme: 'light'
185+
}}
186+
frameborder="0"
187+
loading="lazy"
188+
webkitAllowFullScreen
189+
mozAllowFullScreen
190+
allowFullScreen
191+
allow="clipboard-write">
192+
</iframe>
193+
</div>
194+
<p></p>
195+
</TabItem>
196+
<TabItem value="2" label="Map Takes Gesture Preference (Enabled)">
197+
<div style={{
198+
position: 'relative',
199+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
200+
height: 0,
201+
width: '100%'}}>
202+
<iframe
203+
src="https://demo.arcade.software/m5EdLhn4tlkjfRhhquqg?embed&show_copy_link=true"
204+
title=""
205+
style={{
206+
position: 'absolute',
207+
top: 0,
208+
left: 0,
209+
width: '100%',
210+
height: '100%',
211+
colorScheme: 'light'
212+
}}
213+
frameborder="0"
214+
loading="lazy"
215+
webkitAllowFullScreen
216+
mozAllowFullScreen
217+
allowFullScreen
218+
allow="clipboard-write">
219+
</iframe>
220+
</div>
221+
<p></p>
222+
</TabItem>
223+
</Tabs>
224+
158225
### Show User Location
159226

160227
When enabled, a blue dot appears on the map to indicate the user's current location. If the map is

docs/ff-integrations/payments/stripe.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Integrating the Stripe Payments in your app comprises the following steps:
5858
4. [Testing](#4-testing)
5959
5. [Releasing to production](#5-releasing-to-production)
6060

61-
### 1. Setup Stripe payment
61+
### 1. Setup Stripe Payment
6262

6363
Setting up the Stripe payment includes acquiring the keys from your Stripe account and adding them to FlutterFlow.
6464

@@ -76,7 +76,7 @@ Follow the steps below to set up payment using Stripe:
7676
6. Copy the **Publishable Key** and **Secret Key** from the Stripe API keys page and paste them into the respective fields inside FlutterFlow. If you are using Stripe in test mode, make sure you paste them inside the **Test Credentials** section.
7777
7. Under the **Additional Settings**, you need to specify the following:
7878
1. **Merchant Display Name** (*Required*): Enter a name for the merchant (you) that the user will see while performing the payment.
79-
2. **Merchant Country Code** (*Required*): Enter your country code. This must be the 3-digit ISO country code, such as USA, IND, and NGA.
79+
2. **Merchant Country Code** (*Required*): Enter your country code. This must be the 2 digit ISO country code, such as US, IN, and AU.
8080
3. **Apple Merchant ID** (*Optional*): You need to enter this if you want to accept payments through Apple Pay as well. The instructions for using Apple Pay are in [this section](#2-apple-pay-setup-optional).
8181
8. Click **Deploy**.
8282

@@ -86,7 +86,7 @@ Follow the steps below to set up payment using Stripe:
8686
height: 0,
8787
width: '100%'}}>
8888
<iframe
89-
src="https://www.loom.com/embed/0e4ba1f7f055433e96a7fa6cede2c127?sid=400ef912-1580-44ad-81a9-25051bed0256"
89+
src="https://demo.arcade.software/PcikYUtB8cSug9CyUAOv?embed&show_copy_link=true"
9090
title=""
9191
style={{
9292
position: 'absolute',
@@ -108,7 +108,7 @@ Follow the steps below to set up payment using Stripe:
108108

109109
This would deploy the Stripe payment service as a Firebase Cloud Function. Now, you are ready to trigger payments inside your app.
110110

111-
### 2. Apple Pay setup (optional)
111+
### 2. Apple Pay Setup (optional)
112112

113113
Setting up Apple Pay comprises the following steps:
114114

@@ -185,7 +185,7 @@ To add Apple Merchant ID in FlutterFlow:
185185

186186
![Adding Apple Merchant ID in FlutterFlow](imgs/adding-apple-merchant-id.png)
187187

188-
### 3. Trigger Stripe payment [Action]
188+
### 3. Trigger Stripe Payment [Action]
189189

190190
In order to initiate a payment using Stripe, you have to use the **Stripe Payment** action.
191191

@@ -244,7 +244,7 @@ You can test Stripe payments on mobile and the Web before deployment. To do that
244244
4. [Download](../../testing-deployment-publishing/exporting-code/ff-cli.md) and [run](../../testing-deployment-publishing/running-your-app/run-your-app.md) your project..
245245
5. To test the purchase, you can use any of these [basic test card numbers](https://stripe.com/docs/testing#cards).
246246

247-
### 5. Releasing to production
247+
### 5. Releasing to Production
248248

249249
Before you release the app to production, complete the following steps:
250250

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
---
2+
slug: /resources/forms/form-triggers
3+
title: Form Triggers
4+
tags: [Form, Actions, Triggers]
5+
keywords: [FlutterFlow, Form Triggers, User Interactivity, Dropdown, Slider, Toggle, TextField, On Selected, On Toggled, On Change, On Focus Change]
6+
description: Learn how to use Form Triggers in FlutterFlow to create dynamic, interactive user experiences by responding to user input on widgets like dropdowns, sliders, toggles, and text fields.
7+
sidebar_position: 4
8+
---
9+
10+
# Form Triggers
11+
12+
**Form Triggers** in FlutterFlow allow you to respond dynamically to user input on widgets like dropdowns, sliders, toggles, and text fields. Whether it’s selecting an option, toggling a switch, or typing in a field, these triggers help you create interactive, responsive experiences by executing actions based on user interaction.
13+
14+
## On Selected
15+
16+
The **On Selected** action trigger is used to perform actions when a user selects or changes a value from a widget that presents multiple options. This trigger is associated with form widgets where selection input is required, such as [Dropdown](form-widgets/dropdown.md), [RadioButton](form-widgets/radiobutton.md), [CheckboxGroup](form-widgets/checkbox.md#checkboxgroup), [ChoiceChips](form-widgets/choicechips.md), and [Slider](../../../ui/widgets/built-in-widgets/slider.md).
17+
18+
:::tip[Possible use cases]
19+
20+
- **Dropdown – Shipping Method Selection:** User selects a shipping method from options like "Standard", "Express", or "Next Day". Action under the *On Selected* trigger sets the app state variable `shippingOption`, which updates pricing or estimated delivery time dynamically.
21+
- **Slider – Show Volume Level in Snackbar:** User adjusts a Slider from 0 to 100. The *On Selected* trigger displays a Snackbar showing the current volume: Volume set to: [sliderValue].
22+
- **ChoiceChips – Filter Products by Category:** User taps a chip like "All", "Electronics", or "Clothing". The *On Selected* trigger might set an app state variable (e.g., `selectedCategory`) and update the product list to match the chosen category.
23+
24+
:::
25+
26+
To use the **On Selected** trigger:
27+
28+
1. Start by selecting a supported widget, such as a Dropdown.
29+
2. Open the **Actions** tab in the properties panel and click **+ Add Action**.
30+
3. You will notice that the **Type of Action** (aka callback) is already set to **On Selected**. That means actions added under this will be called whenever the selection changes.
31+
4. Finally, define the actions you want to perform when the user makes a selection, such as setting a variable, navigating to another page, or displaying a message.
32+
33+
![on-selected](imgs/on-selected.avif)
34+
35+
## On Toggled On / On Toggled Off
36+
37+
The **On Toggled On** and **On Toggled Off** action triggers are used to perform actions when a user turns a toggleable widget on or off. These triggers are supported by widgets such as [Checkbox](form-widgets/checkbox.md), [CheckboxListTile](form-widgets/checkbox.md#checkboxlisttile), [Switch](form-widgets/switch.md), and [SwitchListTile](form-widgets/switch.md#switchlisttile), any widget that represents a binary state.
38+
39+
These triggers are especially useful when you want to conditionally execute different actions based on whether a user enables or disables a setting, preference, or feature.
40+
41+
:::tip[Possible use cases]
42+
43+
- **Switch – Enable Dark Mode:** User toggles a Switch to enable Dark Mode. Action under the *On Toggled On* trigger sets the dark mode.
44+
- **Checkbox – Agree to Terms:** User checks a Checkbox labeled “I agree to the terms and conditions.” The *On Toggled On* trigger enables the Submit button. If the user unchecks it, the *On Toggled Off* trigger disables the button again.
45+
- **CheckboxListTile – Select Notification Channels:** User checks or unchecks options like Email, SMS, or Push Notifications. Each toggle fires either *On Toggled O*n or *On Toggled Off* to update selected preferences in the backend.
46+
47+
:::
48+
49+
To use the **On Toggled On** or **On Toggled Off** trigger:
50+
51+
1. Start by selecting a supported widget, such as a Switch.
52+
2. Open the **Actions** tab in the properties panel and click **+ Add Action**.
53+
3. Choose **On Toggled On** to define actions when the toggle is switched on, or **On Toggled Off** to define actions when it's switched off.
54+
4. Add your desired actions, such as updating a variable, showing a message, enabling a button, or triggering a backend call.
55+
56+
![on-toggle](imgs/on-toggle.avif)
57+
58+
## On Change
59+
60+
The **On Change** action trigger is used to respond to real-time user input as they type or modify the contents of an input field. This trigger is supported by widgets such as [TextField](form-widgets/text-field.md) and [Pincode](../../../ui/widgets/built-in-widgets/pincode.md).
61+
62+
It’s ideal for enabling live form validations, updating app state as the user types, or enabling/disabling UI elements based on the current input.
63+
64+
:::tip[Possible use cases]
65+
66+
- **TextField – Enable Button When Email Is Entered:** As the user types in an email TextField, action under the *On Change* trigger checks if the input is a valid email. If it is, it enables the Continue button.
67+
- **Pincode – Auto Submit When Complete:** When a user finishes entering a 6-digit code in a Pincode widget, action under the *On Change* trigger checks if the full code is entered and triggers form submission or a backend call.
68+
69+
:::
70+
71+
To use the **On Change** trigger:
72+
73+
1. Start by selecting a supported widget, such as a TextField.
74+
2. Open the **Actions** tab in the properties panel and click **+ Add Action**.
75+
3. Choose **On Change** from the list of available triggers.
76+
4. Define the actions to trigger, such as setting a variable, showing a message, or calling an API.
77+
78+
![on-change](imgs/on-change.avif)
79+
80+
---
81+
82+
## On Focus Change
83+
84+
The **On Focus Change** trigger fires whenever an input field gains or loses focus, like when a user taps into or out of a [TextField](form-widgets/text-field.md) and [Pincode](../../../ui/widgets/built-in-widgets/pincode.md) widget. It’s useful for providing user guidance (on focus) or performing validations.
85+
86+
:::tip[Possible use cases]
87+
88+
- **TextField – Show Hint on Focus:** When the TextField gains focus, action under the *On Focus Change* trigger displays a helper text or tooltip with input instructions (e.g., “Enter your phone number without dashes”).
89+
- **Pincode – Validate on Exit:** When the user finishes entering the code and the Pincode widget loses focus, action under the *On Focus Change* trigger runs validation logic to check if the input is complete or valid, and displays an error if it's not.
90+
91+
:::
92+
93+
To use the **On Focus Change** trigger:
94+
95+
1. Start by selecting a supported widget, such as a TextField.
96+
2. Open the **Actions** tab in the properties panel and click **+ Add Action**.
97+
3. Choose **On Focus Change** from the list of available triggers.
98+
4. Define the actions to trigger, such as showing helper text, validating input, or updating the UI based on focus.
99+
100+
![on-focus-change](imgs/on-focus-change.avif)

0 commit comments

Comments
 (0)