【发布时间】:2020-12-02 13:30:41
【问题描述】:
到目前为止,我还没有找到在 iOS 设备上获取可用屏幕尺寸的好方法。现在我有了一个非常规的想法,如果即将出现任何问题或有人有更好的想法,我会很感兴趣。
这个想法是通过初始屏幕上 SafeArea 的位置和大小来确定可用的屏幕大小,然后在渲染后将其与事件一起存储到一个块中,但不会触发任何状态更改。然后,该集团会将信息提供给树中的其他小部件。
class _SplashPageState extends State<SplashPage> {
final safeAreaKey = GlobalKey();
@override
void initState(){
super.initState();
WidgetsBinding.instance.addPostFrameCallback(_afterLayout);
}
_afterLayout(_) {
BlocProvider.of<AuthenticationBloc>(context)
.add(AuthenticationScreenSizeDetermined(
getPosition(safeAreaKey, context, null),
getSize(safeAreaKey, context)));
}
@override
Widget build(BuildContext context) {
return SafeArea(
key: safeAreaKey,
child: Text('Init'),
),
));
}
}
这是因为到目前为止我还没有找到提供iOS系统栏大小信息的变量(对于Android,它们可用)。
【问题讨论】: