如何用Flutter实现Windows及Android应用的全屏显示?
实现Flutter应用全屏运行(Windows & Android)
我在开发Flutter桌面应用时,为实现全屏效果踩了不少坑,这里直接分享Windows和Android平台的全屏实现方案,帮大家节省时间。
Android端全屏实现
通过SystemChrome配置系统UI样式和显示模式,实现沉浸式全屏效果:
Widget build(BuildContext context) { // 配置系统UI覆盖样式 SystemUiOverlayStyle systemUiOverlayStyle = const SystemUiOverlayStyle( statusBarColor: Colors.transparent, statusBarBrightness: Brightness.light, systemNavigationBarIconBrightness: Brightness.dark, systemNavigationBarColor: Colors.transparent, systemNavigationBarDividerColor: Colors.transparent, systemNavigationBarContrastEnforced: false, systemStatusBarContrastEnforced: false, ); SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle); // 设置沉浸式粘性模式,底部导航栏可临时呼出后自动隐藏 SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky, overlays: [SystemUiOverlay.bottom]); // 启用edge-to-edge模式,让内容延伸到系统UI区域 SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); return const MaterialApp( home: Scaffold( // 自定义页面内容 ), ); }
immersiveSticky模式下,用户滑动屏幕边缘可临时唤起系统导航栏/状态栏,松开后自动隐藏;edgeToEdge配合透明系统UI颜色,让应用视觉上完全填充屏幕。
Windows端全屏实现
借助第三方包window_manager快速实现窗口全屏:
- 添加依赖到
pubspec.yaml:
dependencies: window_manager: ^0.3.7
- 初始化并设置全屏:
import 'package:flutter/material.dart'; import 'package:window_manager/window_manager.dart'; void main() async { // 先初始化Flutter绑定 WidgetsFlutterBinding.ensureInitialized(); // 初始化window_manager await windowManager.ensureInitialized(); // 等待窗口就绪后设置全屏并显示 await windowManager.waitUntilReadyToShow().then((_) async { await windowManager.setFullScreen(true); await windowManager.show(); }); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return const MaterialApp( home: Scaffold( // 自定义页面内容 ), ); } }
window_manager还支持窗口最小化、最大化、位置调整等更多桌面窗口控制能力。
内容的提问来源于stack exchange,提问作者U.Alyu
相关产品推荐
相关产品推荐

