如何在Flet Python(Flutter)中阻止手机屏幕旋转?
解决Flet应用屏幕旋转导致内容错乱的问题
直接锁定屏幕方向(推荐)
Flet提供官方配置项可直接锁定屏幕方向,无需通过检测屏幕宽度的方式,能彻底避免出现"翻转设备"的提示信息,从根源解决内容错乱问题。
方法1:启动时固定方向
在调用ft.app()时,通过page_orientation参数指定固定的屏幕方向:
import flet as ft def main(page: ft.Page): page.title = "Routes Example" troute = ft.TemplateRoute(page.route) if troute.match("/books/:id"): print("Book view ID:", troute.id) elif troute.match("/account/:account_id/orders/:order_id"): print("Account:", troute.account_id, "Order:", troute.order_id) else: print("Unknown route") def route_change(route): page.views.clear() page.views.append( ft.View( "/", [ ft.AppBar(title=ft.Text("Flet app"), bgcolor=ft.colors.SURFACE_VARIANT), ft.ElevatedButton("Visit Store", on_click=lambda _: page.go("/store")), ], ) ) if page.route == "/store": page.views.append( ft.View( "/store", [ ft.AppBar(title=ft.Text("Store"), bgcolor=ft.colors.SURFACE_VARIANT), # 修正原代码中多余的右括号 ft.ElevatedButton("Go Home", on_click=lambda _: page.go("/")), ], ) ) page.update() def view_pop(view): page.views.pop() top_view = page.views[-1] page.go(top_view.route) page.on_route_change = route_change page.on_view_pop = view_pop page.go(page.route) # 锁定为竖屏向上方向 ft.app(target=main, page_orientation=ft.PageOrientation.PORTRAIT_UP)
可选的方向参数
ft.PageOrientation.PORTRAIT_UP:固定竖屏(默认向上)ft.PageOrientation.PORTRAIT_DOWN:固定竖屏向下(倒转)ft.PageOrientation.LANDSCAPE_LEFT:固定横屏向左ft.PageOrientation.LANDSCAPE_RIGHT:固定横屏向右ft.PageOrientation.LOCKED:锁定当前设备启动时的屏幕方向
方法2:动态切换/锁定方向
如果需要在应用运行时动态调整屏幕方向,可调用page.set_orientation()方法:
# 示例:按钮点击时切换为横屏 def lock_to_landscape(e): page.set_orientation(ft.PageOrientation.LANDSCAPE_LEFT) page.update()
原检测宽度方法的不足
通过检测屏幕宽度的方式会触发系统自带的旋转提示,而使用Flet官方的方向锁定API,系统不会弹出此类提示,同时能彻底阻止屏幕旋转,更适配应用需求。
内容的提问来源于stack exchange,提问作者Python_Lover
相关产品推荐
相关产品推荐

