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-widgets.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,6 +57,10 @@ this example, we will create a `ProductRatingBar` widget that uses a pub.dev dep
57
57
</iframe>
58
58
</div>
59
59
60
+
:::info[Widget Builder as Parameter]
61
+
You can also leverage [**Widget Builders**](../../resources/ui/components/widget-builder-parameters.md) that allow you to pass in widgets to be used within the custom widget tree. This is especially useful when you want to dynamically substitute content for some part of a custom widget - like displaying an item in a custom widget popup.
62
+
:::
63
+
60
64
### Properties: Width & Height
61
65
62
66
For custom widgets, it is mandatory to specify both width and height. These properties are required to size the custom widget appropriately. Without setting these dimensions, the custom widget will not render correctly within your application.
Copy file name to clipboardExpand all lines: docs/resources/ui/components/creating-components.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -224,9 +224,9 @@ respective widgets and action triggers.
224
224
225
225
Aside from standard data types used throughout FlutterFlow, you can also create parameters that are of type:
226
226
227
-
-**Action (callback)**: This allows component users to pass in actions into the component. The component can then invoke the action, usually referred to as a callback, in its own action flows. Callbacks are often using to handle events, like updating a parent's state when a button has been pressed. [You can learn more about how to use callbacks here.](/resources/ui/components/callbacks)
227
+
-**Action (callback)**: This allows you to pass in actions into the component. The component can then invoke the action, usually referred to as a callback, in its own action flows. Callbacks are often using to handle events, like updating a parent's state when a button has been pressed. [You can learn more about how to use callbacks here.](/resources/ui/components/callbacks)
228
228
229
-
-**Widget Builders**: Widget builders allow the component users to pass in widgets to be used within the component's widget tree. This is especially useful when you want users to dynamically subsitute content for some part of a component - like displaying an item in a custom dropdown, or creating a component for some consistent layout. [You can learn more about how to use Widget Builders here.](widget-builder-parameters.md)
229
+
-**Widget Builders**: Widget builders allows you to pass in widgets to be used within the component's widget tree. This is especially useful when you want to dynamically substitute content for some part of a component - like displaying an item in a custom dropdown, or creating a component for some consistent layout. [You can learn more about how to use Widget Builders here.](widget-builder-parameters.md)
Copy file name to clipboardExpand all lines: docs/resources/ui/widgets/built-in-widgets/tooltip.md
+34-2Lines changed: 34 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,15 +4,15 @@ tags: [Base Elements]
4
4
5
5
# Tooltip
6
6
7
-
The Tooltip widget provides a textual description of a widget in a small popup box. It appears when the user taps or long-presses the widget or hovers over it. It's typically used to provide an explanation about the function of a widget.
7
+
The Tooltip widget provides additional information or visual cues of a widget in a small popup box. It appears when the user taps or long-presses the widget or hovers over it. It's typically used to provide an explanation about the function of a widget.
8
8
9
9
:::info
10
10
It is not frequently used on touch devices where tapping or long-pressing can initiate other actions. But they can be incredibly useful in the desktop environment where hover functionality is available.
11
11
:::
12
12
13
13

14
14
15
-
## Adding *Tooltip* widget
15
+
## Adding Tooltip widget
16
16
17
17
To add the *Tooltip* widget to your app:
18
18
@@ -51,6 +51,38 @@ Widget** and then select **Tooltip** widget.
51
51
You can customize the appearance and behavior of this widget using the various properties
52
52
available under the Properties Panel.
53
53
54
+
### Component as Tooltip
55
+
56
+
Sometimes, you may want to display more than just text in a tooltip—such as images, icons, buttons, or other custom components. For example, in an e-commerce app, a tooltip could show a detailed breakdown of customer reviews when users hover over the overall rating.
57
+
58
+
To achieve this, simply set the **Tooltip Type** to **Component** and select the custom component you'd like to display.
59
+
60
+
<div style={{
61
+
position: 'relative',
62
+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
Copy file name to clipboardExpand all lines: docs/testing-deployment-publishing/development-environments/development-environments.md
+52-8Lines changed: 52 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -54,7 +54,7 @@ You can create and switch environments in the **Dev Environments** page in **App
54
54
</div>
55
55
<p></p>
56
56
57
-
The selected environment is used to generate the proper app code when you run, test, deploy or export your app. The only things that change between environment are the [Firebase Project](#configuring-firebase-for-each-environment) or variables that are tied to [Environment Values](#use-environment-values)
57
+
The selected environment is used to generate the proper app code when you run, test, deploy or export your app. The only things that change between environment are the [Firebase Project](#configuring-firebase-or-supabase-for-each-environment) or variables that are tied to [Environment Values](#use-environment-values)
58
58
59
59
60
60
### Use Environment Values
@@ -100,19 +100,63 @@ After switching to an environment, FlutterFlow generates code specific to that e
100
100
You also may see different project errors depending on which environment you have selected.
101
101
:::
102
102
103
-
### Configuring Firebase for each Environment
104
-
A single FlutterFlow project can have**multiple environments**, each mapped to its**own Firebase project**. This ensures that environments like`Development`,`Staging`, and`Production`remain independent, giving you better control over your app's data and behavior throughout different stages of development.
103
+
### Configuring Firebase or Supabase for each Environment
104
+
A single FlutterFlow project can have**multiple environments**, each mapped to its**own Firebase or Supabase project**. This ensures that environments like`Development`,`Staging`, and`Production`remain independent, giving you better control over your app's data and behavior throughout different stages of development.
If your project uses Firebase, you'll need to [**manually configure a new Firebase project**](../../ff-integrations/firebase/connect-to-firebase-setup.md#connect-an-existing-firebase-project-manually) for each environment. This requires setting up a new project in the Firebase console and linking it to the selected environment in FlutterFlow.
108
+
You must complete the Firebase or Supabase setup for an environment before you can test your app using that environment. However, this doesn't stop you from continuing to run and test your app in other environments. Just switch back to Production, and you can keep testing while finishing the setup for the new environment.
109
+
110
+
#### Configuring Firebase
111
+
If your project uses Firebase, you'll need to create a separate Firebase project in the Firebase Console for each environment. Then, you can change the selected environment in the Firebase settings page (see below), and follow the steps to [**manually configure the Firebase project**](../../ff-integrations/firebase/connect-to-firebase-setup.md#connect-an-existing-firebase-project-manually) for each one.
Additionally, you must manually set up [**Firestore rules**](../../ff-integrations/database/cloud-firestore/firestore-rules.md) and [**collections**](../../ff-integrations/database/cloud-firestore/creating-collections.md) for the new environment.
109
117
110
118
:::info
111
-
- You must complete the Firebase setup for the new environment before you can test your app using that environment. However, this doesn't stop you from continuing to run and test your app in other environments. Just switch back to production, and you can keep testing while finishing the setup for the new environment.
112
-
- You must manually set up [**Firestore rules**](../../ff-integrations/database/cloud-firestore/firestore-rules.md) and [**collections**](../../ff-integrations/database/cloud-firestore/creating-collections.md) for the new environment.
113
-
- Data that you add to Firebase through the Content Manager is specific to the Firebase project, and environment, that you have selected
119
+
The data that you add to Firebase through the Content Manager is specific to the Firebase project, and environment, that you have selected.
114
120
:::
115
121
122
+
#### Comnfiguring Supabase
123
+
If your project uses Supabase, you'll need to [**set up a new Supabase project**](../../ff-integrations/supabase/supabase-setup.md) for each environment.
124
+
125
+
Create environment-specific values like `SupabaseAPIURL` and `SupabaseAnonKey`, and then configure the Supabase properties to point to these newly created values. Below is an example of how it would look like.
126
+
127
+
<div style={{
128
+
position: 'relative',
129
+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
0 commit comments