flutter windows如何实现全屏

在Flutter Windows应用中,如何实现全屏显示?我尝试了一些方法但效果不理想,希望有具体的代码示例或步骤说明。另外,是否支持动态切换全屏和窗口模式?

2 回复

在Flutter中,使用SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive)即可实现全屏。此方法会隐藏系统UI,适用于Windows平台。

更多关于flutter windows如何实现全屏的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter Windows 应用中实现全屏,可以通过以下方法:

方法一:使用 systemChrome(推荐)

import 'package:flutter/services.dart';

// 进入全屏
void enterFullScreen() {
  SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
}

// 退出全屏
void exitFullScreen() {
  SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
}

// 在需要的地方调用
TextButton(
  onPressed: enterFullScreen,
  child: Text('进入全屏'),
)

方法二:Windows 平台特定实现

修改 windows/runner/main.cpp 文件:

#include <flutter/dart_project.h>
#include <flutter/flutter_view_controller.h>
#include <windows.h>

int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
                      _In_ wchar_t *command_line, _In_ int show_command) {
  // 创建全屏窗口
  HWND hwnd = CreateWindow(
      // ... 其他参数
      WS_POPUP | WS_VISIBLE,  // 无边框全屏
      CW_USEDEFAULT, CW_USEDEFAULT,
      GetSystemMetrics(SM_CXSCREEN),  // 屏幕宽度
      GetSystemMetrics(SM_CYSCREEN),  // 屏幕高度
      nullptr, nullptr, nullptr, nullptr);
}

方法三:使用 window_manager 插件

pubspec.yaml 中添加依赖:

dependencies:
  window_manager: ^0.3.0

代码实现:

import 'package:window_manager/window_manager.dart';

// 设置全屏
void setFullScreen() async {
  await windowManager.setFullScreen(true);
}

// 退出全屏
void unsetFullScreen() async {
  await windowManager.setFullScreen(false);
}

注意事项:

  1. 方法一 是最简单跨平台的方式
  2. 方法二 需要修改原生代码,适合需要深度定制的场景
  3. 方法三 提供了更多窗口控制功能
  4. 全屏时考虑添加退出全屏的按钮或快捷键(如 ESC)

推荐使用 方法一方法三,它们更易于维护且兼容性更好。

回到顶部