Я верю, что вы действительно хотите, чтобы строка состояния фактически исчезла, а не просто просвечивалась. Если это ваша мотивация, то ваш правильный метод должен выглядеть примерно так:
import 'package:flutter/services.dart';
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
@override
Widget build(BuildContext context) {
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
),
child: Scaffold(
body: Container(),
),
);
}
void _hideStatusBar() {
SystemChrome.setEnabledSystemUIOverlays(<SystemUiOverlay>[SystemUiOverlay.bottom]);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
_hideStatusBar();
}
}
@override
void initState() {
super.initState();
_hideStatusBar();
WidgetsBinding.instance.addObserver(this);
}
}
Здесь есть две части.
Первая , вам необходимо обновить SystemChrome
сразу после запуска вашего приложения. Сделайте это, выполнив необходимые обновления в функции initState
основного виджета StatefulWidget
.
Второй , вам необходимо убедиться, что ваша строка состояния снова удалена, если Пользователь перемещает ваше приложение в фоновый режим, а затем обратно на передний план. Причина в том, что в любом приложении, к которому они обращались, возможно, снова будет отображаться статубар, но он не будет автоматически go снова исчезать, пока вы не укажете его.
Сделайте это, добавив with WidgetsBindingObserver
, чтобы ваш основной виджет действует как наблюдатель для событий, которые запускаются, когда приложение возвращается на передний план. Затем реализуйте функцию didChangeAppLifecycleState(AppLifecycleState state)
для обработки события. Используя этот метод, вы даже можете, например, показывать строку состояния, когда приложение покидает передний план.
Надеюсь, это поможет!