You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:57:01