PermissionHandler
Examples#
Example 1#
import flet as ft
import flet_permission_handler as fph
def main(page: ft.Page):
page.appbar = ft.AppBar(title="PermissionHandler Playground")
def show_snackbar(message: str):
page.show_dialog(ft.SnackBar(ft.Text(message)))
async def get_permission_status(e: ft.Event[ft.OutlinedButton]):
status = await p.get_status(fph.Permission.MICROPHONE)
show_snackbar(f"Microphone permission status: {status.name}")
async def request_permission(e: ft.Event[ft.OutlinedButton]):
status = await p.request(fph.Permission.MICROPHONE)
show_snackbar(f"Requested microphone permission: {status.name}")
async def open_app_settings(e: ft.Event[ft.OutlinedButton]):
show_snackbar("Opening app settings...")
await p.open_app_settings()
p = fph.PermissionHandler()
page.services.append(p) # (1)!
page.add(
ft.OutlinedButton("Open app settings", on_click=open_app_settings),
ft.OutlinedButton("Request Microphone permission", on_click=request_permission),
ft.OutlinedButton(
"Get Microphone permission status", on_click=get_permission_status
),
)
ft.run(main)
- The
PermissionHandler
instance must be added to the [Page.services
][flet.Page.services] list to work properly.
PermissionHandler
#
Bases: Service
Manages permissions for the application.
This control is non-visual and should be added
to [Page.services
][flet.Page.services] list.
Platform support
Currently only supported on Android, iOS, Windows, and Web platforms.
RAISES | DESCRIPTION |
---|---|
FletUnsupportedPlatformException
|
If the platform is not supported. |
parent
#
parent: BaseControl | None
The direct ancestor(parent) of this control.
It defaults to None
and will only have a value when this control is mounted
(added to the page tree).
The Page
control (which is the root of the tree) is an exception - it always
has parent=None
.
build
#
Called once during control initialization to define its child controls. self.page is available in this method.
get_status
#
get_status(
permission: Permission, timeout: int = 10
) -> PermissionStatus | None
Gets the current status of the given permission
.
PARAMETER | DESCRIPTION |
---|---|
permission
|
The
TYPE:
|
timeout
|
The maximum amount of time (in seconds) to wait for a response.
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
PermissionStatus | None
|
A |
RAISES | DESCRIPTION |
---|---|
TimeoutError
|
If the request times out. |
open_app_settings
#
Opens the app settings page.
PARAMETER | DESCRIPTION |
---|---|
timeout
|
The maximum amount of time (in seconds) to wait for a response.
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
bool
|
|
RAISES | DESCRIPTION |
---|---|
TimeoutError
|
If the request times out. |
request
#
request(
permission: Permission, timeout: int = 60
) -> PermissionStatus | None
Request the user for access to the permission
if access hasn't already been
granted access before.
PARAMETER | DESCRIPTION |
---|---|
permission
|
The
TYPE:
|
timeout
|
The maximum amount of time (in seconds) to wait for a response.
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
PermissionStatus | None
|
The new |
RAISES | DESCRIPTION |
---|---|
TimeoutError
|
If the request times out. |