Flutter如何实现Windows全屏
在Flutter开发Windows应用时,如何实现全屏显示?目前使用window_manager插件设置全屏后,顶部仍会显示系统标题栏。尝试过setFullScreen(true)但效果不理想,请问正确的实现方式是什么?是否需要配合其他参数或使用原生平台代码?
2 回复
在Flutter中,使用window_manager插件实现Windows全屏。通过setFullScreen(true)方法即可启用全屏模式,退出则调用setFullScreen(false)。
更多关于Flutter如何实现Windows全屏的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现Windows全屏可以通过以下两种方式实现:
方法1:使用system_window包(推荐)
首先在pubspec.yaml中添加依赖:
dependencies:
system_window: ^1.0.2
然后在代码中实现:
import 'package:flutter/material.dart';
import 'package:system_window/system_window.dart';
class FullScreenPage extends StatefulWidget {
@override
_FullScreenPageState createState() => _FullScreenPageState();
}
class _FullScreenPageState extends State<FullScreenPage> {
bool isFullScreen = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('全屏示例'),
actions: [
IconButton(
icon: Icon(isFullScreen ? Icons.fullscreen_exit : Icons.fullscreen),
onPressed: toggleFullScreen,
),
],
),
body: Center(
child: ElevatedButton(
onPressed: toggleFullScreen,
child: Text(isFullScreen ? '退出全屏' : '进入全屏'),
),
),
);
}
void toggleFullScreen() async {
if (!isFullScreen) {
// 进入全屏
await SystemWindow.enterFullScreen();
} else {
// 退出全屏
await SystemWindow.exitFullScreen();
}
setState(() {
isFullScreen = !isFullScreen;
});
}
}
方法2:使用window_manager包
添加依赖:
dependencies:
window_manager: ^0.3.3
代码实现:
import 'package:flutter/material.dart';
import 'package:window_manager/window_manager.dart';
class FullScreenExample extends StatefulWidget {
@override
_FullScreenExampleState createState() => _FullScreenExampleState();
}
class _FullScreenExampleState extends State<FullScreenExample> with WindowListener {
bool isFullScreen = false;
@override
void initState() {
windowManager.addListener(this);
super.initState();
}
@override
void dispose() {
windowManager.removeListener(this);
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('全屏控制'),
),
body: Center(
child: ElevatedButton(
onPressed: toggleFullScreen,
child: Text(isFullScreen ? '退出全屏' : '进入全屏'),
),
),
);
}
void toggleFullScreen() async {
if (!isFullScreen) {
await windowManager.setFullScreen(true);
} else {
await windowManager.setFullScreen(false);
}
setState(() {
isFullScreen = !isFullScreen;
});
}
@override
void onWindowEnterFullScreen() {
setState(() {
isFullScreen = true;
});
}
@override
void onWindowLeaveFullScreen() {
setState(() {
isFullScreen = false;
});
}
}
注意事项:
- 需要在
windows/runner/main.cpp中确保窗口初始化正确 - 全屏切换时可能需要处理状态同步
- 建议使用
system_window包,它专门为全屏功能设计,API更简洁
两种方法都能有效实现Windows平台的全屏功能,选择适合你项目需求的方式即可。

