From 8e23f2314ba3bed76bb8810954bacb5cf7359697 Mon Sep 17 00:00:00 2001 From: Pinkesh Date: Wed, 15 Jul 2026 11:20:08 +0530 Subject: [PATCH] Update project setup --- .../configuration-files.md | 6 +- .../settings/imgs/fix-align-issues.avif | Bin 0 -> 42823 bytes .../projects/settings/project-setup.md | 240 ++++-------------- 3 files changed, 59 insertions(+), 187 deletions(-) create mode 100644 docs/resources/projects/settings/imgs/fix-align-issues.avif diff --git a/docs/ff-concepts/adding-customization/configuration-files.md b/docs/ff-concepts/adding-customization/configuration-files.md index 0249d2cf..6c623eb5 100644 --- a/docs/ff-concepts/adding-customization/configuration-files.md +++ b/docs/ff-concepts/adding-customization/configuration-files.md @@ -278,7 +278,7 @@ This registers `NewScreenActivity` so the system knows it exists. **Example 2: Requesting Permissions** -If your app requires access to restricted resources such as wake locks (to keep the device awake) or audio recording, you must declare the necessary permissions in `AndroidManifest.xml` by [manually editing](#option-2-manual-edit-mode) the file. **Tip:** You can also add custom permissions directly through the [**Permission Settings**](../../resources/projects/settings/project-setup.md#adding-custom-permission) in FlutterFlow. +If your app requires access to restricted resources such as wake locks (to keep the device awake) or audio recording, you must declare the necessary permissions in `AndroidManifest.xml` by [manually editing](#option-2-manual-edit-mode) the file. **Tip:** You can also add custom permissions directly through the [**Permission Settings**](../../resources/projects/settings/project-setup.md#adding-a-custom-permission) in FlutterFlow. ```xml NSLocationWhenInUseUsageDescription @@ -855,4 +855,4 @@ Additionally, your Library Project can pass values (like API keys) into those sn This makes Libraries incredibly powerful and enables easy integration of tools like **PostHog** (analytics), **Sentry** (crash reporting), **CleverTap**, **flutter_local_notifications**, **flutter_nfc_kit**, and many more directly from the Marketplace.

- \ No newline at end of file + diff --git a/docs/resources/projects/settings/imgs/fix-align-issues.avif b/docs/resources/projects/settings/imgs/fix-align-issues.avif new file mode 100644 index 0000000000000000000000000000000000000000..b01378b3d2ccb6c4b9697ba761d1c2cd249d50e0 GIT binary patch literal 42823 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

Od+Y3=&D9estdpK+2g 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 z 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 -### Adding permission message +### Adding a permission message -Although we add some default permission messages, you must change them to clearly mention the reason for asking the permission(s). +Although we add some default permission messages, you must update them to clearly explain the reason for requesting each permission. -To add permission message: +To add a permission message: -1. Select **Settings & Integrations** from the left Navigation Menu. -2. Under the **Project Setup**, select **Permissions**. -3. Here you can customize the permission message for each permission. For the permissions that are not added/enabled yet, you can turn on the toggle and enter the message. On running the app, this message will be displayed inside the standard alert dialog (between your app name and action buttons). +1. Select **Settings & Integrations** from the left navigation menu. +2. Under **Project Setup**, select **Permissions**. +3. Customize the permission message for each permission. For permissions that are not yet added or enabled, turn on the toggle and enter the message. When the app runs, this message appears inside the standard alert dialog, between your app name and the action buttons. -For the already added permission (which you can't turn off), if you leave the message empty, the message displayed as a hint will be shown inside the permission dialog. +For permissions that are already added and cannot be turned off, leaving the message empty will use the hint text shown in the permission dialog. ![Adding permission message](../imgs/add-permission.png) -### Adding custom permission +### Adding a custom permission -Sometimes you might add a feature (probably using Custom Widget or Custom Action) that requires user permission and is not present in the list here—for example, adding a speech recognition feature to your project. In that case, you can add the required permission along with the message for the Android and/or iOS from here. +Sometimes you might add a feature, such as a custom widget or custom action, that requires a permission that is not listed here. For example, you may add a speech recognition feature to your project. In that case, you can add the required permission and message for Android and/or iOS from here. -To add custom permission: +To add a custom permission: -1. Select **Settings & Integrations** from the left Navigation Menu. -2. Under the **Project Setup**, select **Permissions**. -3. Click on the **+ Add Permission**. -4. Inside the **iOS Permission key** enter the value (e.g. *NSSpeechRecognitionUsageDescription*, *NSMicrophoneUsageDescription* etc.). -5. Inside the **Android Permission name** enter the value (e.g., *RECORD_AUDIO*, *CAMERA*, etc.). -6. Also, enter the **Permission Message** that describes the exact usage of data. -7. Click on the Done icon on the right. +1. Select **Settings & Integrations** from the left navigation menu. +2. Under **Project Setup**, select **Permissions**. +3. Click **+ Add Permission**. +4. Enter the **iOS Permission key** value, such as *NSSpeechRecognitionUsageDescription* or *NSMicrophoneUsageDescription*. +5. Enter the **Android Permission name** value, such as *RECORD_AUDIO* or *CAMERA*. +6. Enter the **Permission Message** that describes exactly how the data is used. +7. Click the Done icon on the right.

-:::info[Adding translation for messages] +:::info[Adding translations for permission messages] You can also add multilingual permission messages by following the instructions [**here**](../../../ff-concepts/localization-accessibility/localization.md). ::: @@ -94,11 +94,11 @@ You can also add multilingual permission messages by following the instructions Using this action, you can request permission before accessing the user's private information, such as location, voice, contacts, and photos. -This action is helpful when you add a custom widget or action that accesses the user's personal information and does not have an inbuilt permission mechanism. +This action is helpful when you add a custom widget or action that accesses the user's personal information and does not have a built-in permission mechanism. :::info -- Request permission only works on a mobile platform. -- There won't be any dialog shown for the *Bluetooth* permission. +- Request permission only works on mobile platforms. +- No dialog is shown for the *Bluetooth* permission. ::: @@ -160,28 +160,21 @@ This action is helpful when you add a custom widget or action that accesses the #### Adding Request Permission action -Follow the steps below to add this action to any widget. +To add this action: -1. Select the **Widget** (e.g., Button) on which you want to add this action. -2. Select **Actions** from the Properties panel (the right menu), and click **Open**. This will open an **Action flow Editor** in a new popup window. If it's the first action, click **+ Add Action** button. Otherwise, click the "**+**" button below the previous action tile and select **Add Action**. - 1. Search and select the **Request Permissions** (under *Alerts/Notifications*) action. - 2. Set the **Permission Type** to the one you need. Only the permissions for which the message is present are shown here. - 3. Now you must check if the permission was granted or rejected. You can do so by adding the conditional action. To do so, click the "**+**" button below the previous action tile and select **Add Conditional**. - 4. From the **Set Variable** menu, select **Permission > Permission name** (this should be the permission you requested for). - 1. The **TRUE** section represents success, meaning permission was granted. Here you can add any action that informs users or access their data. - 2. The **FALSE** section represents failure, meaning permission was denied. Here you can add any action that informs users about the permission they have denied. - 5. Click **Close**. +1. Add a new action and select **Request Permissions** under **Alerts/Notifications**. +2. Set the **Permission Type**. Only permissions with a configured permission message appear here. +3. Add a [conditional action](../../control-flow/functions/conditional-logic.md#conditional-actions) to check the result. Set the condition variable to **Permission > Permission name** for the permission you requested. +4. Add the next actions under **TRUE** if permission is granted, or under **FALSE** if permission is denied. Then click **Close**. - -
-

-
- -![adding-request-permission-action-flow](../imgs/adding-request-permission-action-flow.avif) -

-
-
---- + ## Platforms -By default, the generated project can run on Android, iOS, and the Web without any additional effort. However, to run your app on the desktop, you need to enable a platform (e.g., MacOS, Windows, Linux) from this page. +By default, the generated project can run on Android, iOS, and the Web without any additional effort. However, to run your app on desktop, you need to enable a platform (e.g., macOS, Windows, Linux) from this page. ### Advanced Android Settings @@ -220,7 +206,7 @@ By default, the generated project can run on Android, iOS, and the Web without a ### Advanced iOS Settings -- **Disable iPad Support:** If the app is specifically designed for an iPhone and doesn't provide a good user experience on an iPad, you might want to trun on this setting. +- **Disable iPad Support:** If the app is specifically designed for an iPhone and doesn't provide a good user experience on an iPad, you might want to turn on this setting. - **Minimum iOS Version**: This specifies the lowest version of iOS that your app can run on. ### Advanced Web Settings @@ -235,9 +221,8 @@ This applies only to the deployment platform options, not to the FlutterFlow Des ::: ## Multiple Languages -To support multiple languages in your app, refer [here](../../../ff-concepts/localization-accessibility/localization.md). +To support multiple languages in your app, refer to the [localization guide](../../../ff-concepts/localization-accessibility/localization.md). ---- ## Walkthroughs @@ -251,7 +236,7 @@ For example, consider a news article app. When a new user opens the app for the height: 0, width: '100%'}}> -
-

- - -
- -
-

-
- - -Here's how you do it: +When a walkthrough is added on a page, you'll see the following types of actions, also called callbacks, and you can choose any of them to add actions under it. -1. Open the page, select **Actions** from the Properties panel (the right menu), and click **Open**. This will open an **Action Flow Editor** in a new popup window. -2. Select **On** **Walkthrough Complete** or **On Walkthrough Skip** and add actions under it. +- **On Walkthrough Complete**: Actions added here run when the user finishes all the steps of the walkthrough. +- **On Walkthrough Skip**: Actions added here run when the user chooses to skip the walkthrough. -
- -
-

### Video guide @@ -491,38 +387,15 @@ If you prefer watching a video tutorial, here's the one for you: ### FAQs
-How do I fix when walkthrough misaligns on a widget, not focusing on the component? +How do I fix a walkthrough that is misaligned or not focusing on the correct widget?

This issue typically arises when a widget's animation and the walkthrough start simultaneously. As the walkthrough initiates, it captures the widget's initial position before the animation completes. Consequently, after the animation concludes, the widget may have shifted to a different location, leading to misalignment. ![Misaligned focus example](../imgs/misaligned-focus-example.png) -To resolve this, simply add a delay ([Wait](../../../resources/control-flow/time-based-logic/wait-action.md) action) before initiating the walkthrough. **Remember,** the wait duration must be equal to or greater than the duration of the animation. +To resolve this, simply add a delay ([Wait](../../../resources/control-flow/time-based-logic/wait-action.md) action) before initiating the walkthrough. Make sure the wait duration is equal to or greater than the duration of the animation. -

- -
+![fix-align-issues](imgs/fix-align-issues.avif)

@@ -533,4 +406,3 @@ To resolve this, simply add a delay ([Wait](../../../resources/control-flow/time We are aware of a limitation where widgets that are not visible on a page (i.e., you need to scroll down to see them) may not be highlighted. We are actively working to resolve this issue. As a temporary workaround, you can try placing the widget in an area that is visible without scrolling. We appreciate your patience and hope to have a fix soon!

-