Flutter Statusbar Color не меняется в iOSIOS

Программируем под IOS
Ответить
Anonymous
 Flutter Statusbar Color не меняется в iOS

Сообщение 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),
);
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... ing-in-ios
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»