-n*%>L*qzONbBBE9;rX
zba2(zBBpQi2TO!ds~E;3vgOg~;PQluNDqYDm#fxLng
zlb@%$^)-B18qS!)S(sOb2>F5ujXNwK41WCAYKm^clkI6!0*BLbz*|-*3F(v@522Rr
zjj)i%g3LcadM(pFIt6&yvH1eb)i!gIFl{?y%l&_RkBLnGw}Wf5saR|e1VsP1dYuZv
z9umDDtnEpc-L1OHSRKj(b}Z^hG2!-4)%BLLw9{kI%afzs%_7;ir+z_wfZ`JV-}V@)8E
zvaMQ-R2(&q_yI4VQk#1|gl)J=-dQprV6UE3&LY(g*%?0(l6K5h89vv0+A6>Tc*~1r
zs!#(FQf^pxX_D8&31^4ChUqe4KS19e%LvF9E^1NUSc%Q+Y_O4cJU~jcEItV3&+@*l
z7#I*KdFHz&pyZ0dMYqewVT!UyiGH!p4e}XyF97I{Dy3%r`-@gV6+3wpdGGotig}5q
z$~DIWT)1fGQG!qOjC=aMoNxo8U08O_IYyY6Y{MglY37~1@Z|nBFf45-h?Ju^6E11+z3ID2r|ZP{ktWzI
z
z0Sm^6?Ubv%pVor_0XlHIXZIj^K5{F2Tb!sS@smM-ms^yi^SAE
zt2i%ZTT&!z8P*I;s8)J{(g}~}K$tSqRghxzwiFP0Zl)FzQH|^KIOK-q-8}h$h6J%g
z8C)b#aii<01k3N$HA{@bAVXA#4V|gAL#NSsyI65PBl&VIIM=nh%_xA`$2`m3<7gxE
zi!0!-$g+KG)!k>>U9N)FKZUQkjAoZ{c$dZIwCZveQB>gD=?(Fa)ev#6N56km2~!a
z_IUQIg%0H#OvvK-!=eYn&I)@erW~7CR4(q~g8&(i=gptwvs2;N5gg}AVXVh8!ZyI45oGT4_QA%YDBUx4q8;+;S!wJs;7sm^DG?{;2GfLr^?2fCjme*)Bu
zfN-o#ZaTS`V9^^kZsVEY;Z$cx?@8dAiR(CZ_Z}LEE#xgIo%&eJ_kCb7VJgJ|u6mF=
z_y&}F*Pcx+z9aep(X$rDr>k|RhvB0&kcxjkHL9YBJR*wUC2=a#6
ztzK%X1has<=A)-PN&4$5rNy7o!39)KO|w%aFpSP~lIQU;5_^4M-qR9kZ
zmn8RMs>=8z%lSx^zAVh3i7W=JGkcZZzx}}mmmJzm@ntzeJLe2^-g`9zTr%l=S-bOo0x&UFdp?{J$
zi*GIy@C{8+SNtMgdX2DQ^}HH!6Y>e5vy3O)GHTA;u;yR`ge|Hg<>2iHZaAYgo^=lx
zA8{otb7I9Nh@+X0jO(jfIlm&SNHQOx$g|GN%tf|MvR6jsX)F4Xk;{NG6G2b()T~=~
zkPM^9Krlg0R0eY=x#zbb)_vlm!M5`Gbzn+*+cD0z7XmM{ugRpmTEe;{NtwsVUA*X?WN^XAI%)6
zNtf&}XS1Pb(TLj@
zA!7tuprLF|>}ri8O;44O`XUi)+Z`@bGNO!!uYhr{b&$zTLXnba>V@s5`DZsZIR`Ug
z=b0~8^W8Ck@dw*i+{g9P7Zku$c??Hgv-UsSU8A0r3|k0=-RmSkNq5aen=MghW*6lk
z;S`~Qs9;J7Af5`DV5p#7@GE5%?G3*_2!$|yt)DTQH09)S^bMz{0;`+lV4QR^{cSA=
z5(r9_+7}Ud*KNJkNB-|ALc(B%*%Ph6q!#
z{!jVRsqxnnW@w2|WPqau``1Ujjb4dx=njb+hJ4@UPo0&@hQ@n234sMyTo^W-*^4IF
zJyT9+2g*XtI=2CcbRP|2`VccJV))|L-Py~HYRtc{z`doT`Ovp7E`a^U2ZcQ~$HPmJ9(-F(wk|EW)>&w-4ErEu~H!mWf$Ht%C6$K=uY32Wv{umx1b2*hLdcfYYbnt+NCLv=A-O|j|85P<$nknv$`_yT=AD*r6XjiP<
z!p&Mz#Go}Lo|Xt%aR6ec=}nxUvSoTBBb8PZ8s(x)wD*0e4QNt?l*T{}f-c4FI+2pd
zp*5~2Mb)ts7^WWI|DbSRP40}xk-J899UlxVI
zil2QXKPaMDP|)c;ihEi%OKxq@5d0h^@TABD{&{^4@N4tDV~W$%OJF=(ODOIX5DFt0
z)tKV;5WiXy=x8B`Rxaa~DJVmIda^=1SK`d1$r#4EW)oA*Fs@jQ{zc;R2@31`Ev2{(
zGQ^X{3W-to=6N2*UQ0*cN96)nP~qEo9D>f+_1!pzsvq2_A+6C
zJXHm6Wd6&BB=>{G){W$$J~#MPGb#d*p+GF1Gp8M_pkYox$$d&H3>P}9aQ%SnzB^u|
zKCty^-*Dg!vn#Msz2fb#auxGaryT)?%Bh1FFUO;UthZor+hNWix=x1GKyWp<77j{>K
zpwX$!#uF_cFx_UY|D=8gFOp8pttQ2-i`j7~JaP751CVDBO$vLgtOJl={`Xqk
zs3pO074!$R1Z9AP@OwCh6QFZ9(tz&Mijinp3cT
zRwfSGVn|U`_E#2x1Ob-0EGbca{}maSiOl3K5{T}vQ}rTBi~YkKLtoR(z8Ec>c(pNG
zp4i#zB0OobX$6Rym7Sr^@K5TvO-YUZ6SKlS`5lH*IDYwqgl$Y2E;p#yU
zrd+LU7yafo#aHuOUpgWCbpGK(4pyi_u$j2Cf{|de6v+O?zFB|w6HvkQ`{+)4|9YQ>
zx(W44M9y9Xqsk-LSXpQY)J|41fQbpc>Oi!f4{)(VgxVv;v%gaek>~&yqz*_yu)79b
z`xEzbQrk9N>{I~gYy9Mq=|E`wc`Mrkn7J{$sV*VZ
zZJL9&w+6zoen3vSq(oQ%^?470blo58kfUH5IXq}Hc%T@>hG}PZ{4M#eGK4v?nYeXB
zG^vi@ZnwmjBg*#;hKm?!|C}Y*Oq>VPk|XKhw3sv*TJXBeci!&f%ZwU@;5J$++a)nh
zgV_&~osl8_HhV6xI;Tq-8t4?WHj^p{mHUg-g14^}k}3=#NDb4{q=J=xBe)}#DS&F4
zFrO6PE~u;AVvq*QE^de%eYj+zr6YTij1QKuCR?HKr$rE0`%h$x^3i=RmUnfsr#QSC
z-=R|LYdR^#1ck)M11UX1^_bCrEDz>7LH$P(CSL#s^C@Y0ws3>vjTS4fXC6*rSNX!_
zow4zppd1-xoLj}Eg!&5LeEViHmKD28QymK77AZim1L
z;?-1?aF0FS(#H12m;7niARKAGv~qMKp_=Jms55Be!1|)RGJ}!H7L#y(#|1iKkHb?+ppaE;
zd4eWF6-X>JX5s%cgZFzY#KDkwp`kevq%(Zl`^iu;8zZBWl6
z{&HO!jgRuqlwo5Vh5sU;?-{dH?sp+=8S9U&JJ+>rNW9cImje8sL=%kg0P^yxY!VS(
zXHAU`E^@tgfOI8U{`ukQCyLB%65%*@&X~PM(k+O!MqC5GBut-8BuBwu*JZd*h?waF
z;{4NW0fRo2LIRvMi+T?x@77PcvaP*Dtt2nElpcR^8KfyAma}UcyO=yAXmZ)q>z5x(q&7>i?sl(Ffz9**TQdET|1i
z4`P|#W#=S<6D8^X*5Ap&F(D`sXxNs4^D>_Hv|?+_KkfROYAs*C1G(OHS)u+WO-dyv
z+NwBwE*+bW&^{zR-$f=}s_#=8U;*95WdEt
zIDc(es&T0Xn>D4{V1~FVs12bYU$SCY%gfXunUYIZ@-I-J5$6AN8{X_%8ME&?yse-;
zIkD`CdWf@4d3P^)94!BOaN-ePoDL;hvHd$6Tb!dbxd6#!X^;Pgm-*+TK=ETNlGUFn
zE|U0;0h8ZYZ1osMO>&`c6&JewF{u$ebXCX;47O1v+j}$}IsVLyqSbUAou&wWYmG6>
z(1MB*w_wo>I2ngiJ&-D}T)OeMBR24#7Ffqv{n`4b@qd9q%5|{Kzsn#U)!2Vz?COiY
z%)m^~mXnjBn;&PkY50qUW^PbfgyH*`
zHxJmYG`Y$gt)#D0?M%ii5%}fP=nr(UQG
zzVZSXO1eQ8*xcEt|3x}jHTU!J=46!98+4vX1DKLvaE78Brd9I=FiV-eExN=FD5(+H
zhyQZ0_+SIN)13hgh|)z%PMnJ~Ltw|a8Z6L8OH5KivKg$KFcJ{FMeS`UajK
z>svzM`@tw1T7x5c7X7bnEB65q0&w{;J}x(Cc)f#MQ&o!ojSM$uV@*}Ge~tAKs#x-N
zoO%@QJP2{z{t
z>d@iKg@1L9)RWv7`?3bXYF&t17Vh(~O|5?n|3zi6_QjOUqEYHhvy#j2GpSdO8}{aY
z&&`pKFzhwX;EsCr0dIALj+rwKKioAttk~IV+!##%j~zj2$nIm*&YcM$D9ZruM7DIj
zH06M(`&yxa_LEr0Q2D`sYT>=@)oD&N9uzV$-;gXdWp158YMjtlf3``w5CYm$%)Z7j
zVcguiRp$faa-(QxZ8dGrn6v6@6ji-SDYI*#*Z=gNgm9{jj}8z9`)n~DnHU%Pq^&h_;g#bjE@mKm5=@PA(_^)d=~$M40;p<3~=uUj^8
zaoXPewo1^kwC3ko_i9!BUbS3j8%h|9mP{?y1F^WX%%1WjrnD@}y2D=d9}{HMq|s}k
zFDMqi)(DcbG(^?I*8$_h`Y}4tPnY*pfPGR)e>Pj
zVQvIrE=~SIJV`Z-;&N(AR}$c@-ka<;Re@GOH}OaA3yRaKlx@CJ?*-Ku*@{Un#7aM-
zD1>2`iY`*V@k3s0l);#6Vr4$+b)ns?*^YaU0+ae2%m;@HzyHXx`<*nZ!l~6b1rX!@4vb;vQA^h+U`M-`?s95
zpHeVX$9$pORM4+Uyo|8)X6{rZg7X?YzqCvdvqzdm#4bl5~(xbo1$wEs{CO-G6-
zs%|1b*_Iuj*zg6Nq1QLTA#yDY@$6xdZ$&P-W=SuZBcKrOvoqHMshLkUWyCM~&FLeG
zy^inQX}quBOA68~`O*qVxPjs{3VqLyFSbA8(q4Y@URbk?>=w5Ka_D?g4^~|TF)4k_
z%c(>;rKoOR+|<(?!7{Y>cee~9PmU4Xs^rz`%>z~KOD)Hmt?_3>(K`QhSiep;i#okO
z1`}l7=_7W*A$5u3x5wp1c9}Fa?(R8KpaAl@-t2kezPy)ZaKE+UBQa-&a@O*+BJmI%
zS7_tMsaEHTV&@}n<7S|Ru0%Rge}d-+@gAs>lR(RZ=K?XlttTt!Z=oOl4cOi+nz4JTr^EBzbEfO(gl
z3?JryshAD?ga83QThEFw(mNYWB`2NEtv1fQh;8i>cU^QxjL~bd=V4oIl!$JuznL`-
zD#PNBv7+i){T8t0HA_>DQ)tPmdU4<
z`@YMYz)x=*TkucNpUcc~5hsbni}-ZVtJKu^637UB&d{qSAE8`xP-=L
zvaGq6O|!?K!_=U}?egx=XM=t@aYDN~w*n36-H7A?(eU3|_bih)A6C;jH1QwRbx=VM
zj`VZobI!ZtJ~Q-|9rTTe2;T<8zANO{!+f7Ls`e<)q{
zeuh32sj3EyZrKO+nZdj*XiWgJ8_F6u3a@-X$RM!evudK8Lke03z+K$;AnkN}>Iz~W
z|9ziRIu5ZGH++cW~@zsDnhH{K7w
zduKY{$*Sx(hnmPCyORynd$LHpA747GSm_Be=BV)Io>frq@N-~q}eeQ@{yJIFI@m
-### 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 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**.
-
-
-
-
-
-
-
-
-
----
+
## 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%'}}>