当我尝试使用库(flutter_statusbarcolor_ns)或直接使用直接flutter代码设置状态栏颜色时:
void _setStatusBarColor(Color color) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: color,
));
}
状态栏颜色未正确设置。它在 ipad 纵向模式下运行完美,但在 ipad 横向模式下性能下降近一半(或 60%)。
注意:我尝试了很多东西,包括不同的库、检查 flutter 原生代码,但没有运气。如有任何帮助,我们将不胜感激。
flutter 中的渲染不受系统调用或组件的影响,因此 1 个此类解决方案可能涉及手动渲染所需的颜色并仅使用 systemchrome 设置来调节亮度(图标应该是白色还是黑色)
class StatusBarViewer extends StatefulWidget {
final Widget child;
const StatusBarViewer({required this.child, super.key});
@override
State<StatusBarViewer> createState() => _StatusBarViewerState();
}
class _StatusBarViewerState extends State<StatusBarViewer> {
@override
Widget build(BuildContext context) {
return Stack(children: [
SafeArea(
child: widget.child,
),
Align(
alignment: Alignment.topCenter,
child: Container(
width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).viewPadding.top, color: Colors.blue),
)
]);
}
}
这样的东西将允许您拥有一个“SafeArea”小部件,您自然会在其他地方使用它来处理状态栏的更改,您甚至可以自定义应用程序栏的实现来处理不使用安全区域的情况,以便您可以自定义填充它,但作为你可以在 ipad 模拟器中看到它的工作原理