Я хочу использовать строку светового состояния для некоторых из моих экранов, и мне нужно установить ее обратно на темную статус, когда перемещается с этих экранов. Я сделал виджет и завернул эти экраны для него. Это работает для Android, а не для iOS. Мне не нужно использовать Appbar и Annoted Region < /p>
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class LightStatusBarWidget extends ConsumerStatefulWidget {
final VoidCallback? onPop;
final Widget child;
final bool didReplace;
const LightStatusBarWidget({
super.key,
required this.child,
this.onPop,
this.didReplace = true,
});
@override
ConsumerState createState() => _LightStatusBarWidgetState();
}
class _LightStatusBarWidgetState extends ConsumerState {
@override
void initState() {
super.initState();
SystemChrome.setEnabledSystemUIMode(
SystemUiMode.manual,
overlays: [SystemUiOverlay.top],
);
WidgetsBinding.instance.addPostFrameCallback((_) {
setStatusBarColor(isLight: true);
});
}
@override
void dispose() {
WidgetsBinding.instance.addPostFrameCallback((_) {
setStatusBarColor(isLight: widget.didReplace ? false : true);
});
super.dispose();
}
void setStatusBarColor({bool isLight = false}) {
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
statusBarColor: isLight ? Colors.white : Colors.black,
statusBarIconBrightness: isLight ? Brightness.dark : Brightness.light,
statusBarBrightness: isLight ? Brightness.light : Brightness.dark,
),
);
}
@override
Widget build(BuildContext context) {
return PopScope(
onPopInvokedWithResult: (didPop, result) {
setStatusBarColor(isLight: false);
widget.onPop?.call();
},
child: SafeArea(child: widget.child),
);
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... ing-in-ios
Flutter Statusbar Color не меняется в iOS ⇐ IOS
Программируем под IOS
1739941140
Anonymous
Я хочу использовать строку светового состояния для некоторых из моих экранов, и мне нужно установить ее обратно на темную статус, когда перемещается с этих экранов. Я сделал виджет и завернул эти экраны для него. Это работает для Android, а не для iOS. Мне не нужно использовать Appbar и Annoted Region < /p>
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class LightStatusBarWidget extends ConsumerStatefulWidget {
final VoidCallback? onPop;
final Widget child;
final bool didReplace;
const LightStatusBarWidget({
super.key,
required this.child,
this.onPop,
this.didReplace = true,
});
@override
ConsumerState createState() => _LightStatusBarWidgetState();
}
class _LightStatusBarWidgetState extends ConsumerState {
@override
void initState() {
super.initState();
SystemChrome.setEnabledSystemUIMode(
SystemUiMode.manual,
overlays: [SystemUiOverlay.top],
);
WidgetsBinding.instance.addPostFrameCallback((_) {
setStatusBarColor(isLight: true);
});
}
@override
void dispose() {
WidgetsBinding.instance.addPostFrameCallback((_) {
setStatusBarColor(isLight: widget.didReplace ? false : true);
});
super.dispose();
}
void setStatusBarColor({bool isLight = false}) {
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
statusBarColor: isLight ? Colors.white : Colors.black,
statusBarIconBrightness: isLight ? Brightness.dark : Brightness.light,
statusBarBrightness: isLight ? Brightness.light : Brightness.dark,
),
);
}
@override
Widget build(BuildContext context) {
return PopScope(
onPopInvokedWithResult: (didPop, result) {
setStatusBarColor(isLight: false);
widget.onPop?.call();
},
child: SafeArea(child: widget.child),
);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79450230/flutter-statusbar-color-is-not-changing-in-ios[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия