Skip to content

Commit 6129e14

Browse files
committed
Merge branch 'pinkesh/update-app-store-deployment' of https://github.com/FlutterFlow/flutterflow-documentation into pinkesh/update-app-store-deployment
2 parents f461358 + 08c942f commit 6129e14

File tree

6 files changed

+92
-12
lines changed

6 files changed

+92
-12
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ this example, we will create a `ProductRatingBar` widget that uses a pub.dev dep
5757
</iframe>
5858
</div>
5959

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+
6064
### Properties: Width & Height
6165

6266
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.

docs/resources/ui/components/creating-components.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,9 @@ respective widgets and action triggers.
224224

225225
Aside from standard data types used throughout FlutterFlow, you can also create parameters that are of type:
226226

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)
228228

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)
230230

231231

232232
### Actions

docs/resources/ui/widgets/built-in-widgets/tooltip.md

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ tags: [Base Elements]
44

55
# Tooltip
66

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.
88

99
:::info
1010
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.
1111
:::
1212

1313
![tooltip.png](imgs/tooltip.png)
1414

15-
## Adding *Tooltip* widget
15+
## Adding Tooltip widget
1616

1717
To add the *Tooltip* widget to your app:
1818

@@ -51,6 +51,38 @@ Widget** and then select **Tooltip** widget.
5151
You can customize the appearance and behavior of this widget using the various properties
5252
available under the Properties Panel.
5353

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
63+
height: 0,
64+
width: '100%'}}>
65+
<iframe
66+
src="https://demo.arcade.software/jnFUZZQ9pmCH5vgvhVVA?embed&show_copy_link=true"
67+
title=""
68+
style={{
69+
position: 'absolute',
70+
top: 0,
71+
left: 0,
72+
width: '100%',
73+
height: '100%',
74+
colorScheme: 'light'
75+
}}
76+
frameborder="0"
77+
loading="lazy"
78+
webkitAllowFullScreen
79+
mozAllowFullScreen
80+
allowFullScreen
81+
allow="clipboard-write">
82+
</iframe>
83+
</div>
84+
<p></p>
85+
5486
### Change trigger mode
5587

5688
On touch devices, the *Tooltip* opens on tap. To make it open on long press instead, use the **Trigger Mode** property.

docs/testing-deployment-publishing/development-environments/development-environments.md

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ You can create and switch environments in the **Dev Environments** page in **App
5454
</div>
5555
<p></p>
5656

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)
5858

5959

6060
### Use Environment Values
@@ -100,19 +100,63 @@ After switching to an environment, FlutterFlow generates code specific to that e
100100
You also may see different project errors depending on which environment you have selected.
101101
:::
102102

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.
105105

106-
![flutterflow-environment](../imgs/flutterflow-environment.avif)
106+
![flutterflow-environment](../imgs/flutterflow-environment-update.avif)
107107

108-
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.
112+
113+
114+
![firebase-dev-env-config.png](../imgs/firebase-dev-env-config.png)
115+
116+
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.
109117

110118
:::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.
114120
:::
115121

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
130+
height: 0,
131+
width: '100%'}}>
132+
<iframe
133+
src="https://demo.arcade.software/VxEaC6uxhnB4zzluIE9i?embed&show_copy_link=true"
134+
title=""
135+
style={{
136+
position: 'absolute',
137+
top: 0,
138+
left: 0,
139+
width: '100%',
140+
height: '100%',
141+
colorScheme: 'light'
142+
}}
143+
frameborder="0"
144+
loading="lazy"
145+
webkitAllowFullScreen
146+
mozAllowFullScreen
147+
allowFullScreen
148+
allow="clipboard-write">
149+
</iframe>
150+
</div>
151+
<p></p>
152+
153+
:::note
154+
It's recommended that you keep schemas consistent between the different Supabase environments. It's also recommended that you
155+
**Get Schema** from the Production environment and build from there.
156+
:::
157+
158+
159+
116160

117161

118162
### FAQ
74.8 KB
Loading
Binary file not shown.

0 commit comments

Comments
 (0)