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

Flutter设置全屏时main.dart调用SystemChrome触发system_chrome.dart报错如何解决?

问题原因

报错的核心原因是在main函数中执行SystemChrome.setEnabledSystemUIMode时,Flutter框架的WidgetsBinding尚未完成初始化,用于和原生侧通信的MethodChannel还未准备就绪,直接调用原生通道方法就会触发断言错误。

解决方案

只需要在调用SystemChrome相关方法前,先调用WidgetsFlutterBinding.ensureInitialized()完成框架初始化绑定即可,修改后的main.dart代码如下:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  // 先完成Flutter框架绑定初始化
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
  runApp(const MyApp());
}
补充说明
  • 该方案是全局生效的,不需要在每个页面的build方法重复调用相同代码,也能避免build方法重复执行时多次触发系统UI设置的冗余操作
  • 如果需要适配不同Android版本的沉浸式效果,也可以替换为SystemUiMode.edgeToEdge模式,同时配合系统导航栏/状态栏颜色设置实现更适配的全屏效果

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:54:08