gpt4 book ai didi

Flutter 获取真正的设备方向

转载 作者:行者123 更新时间:2023-12-05 06:15:46 27 4
gpt4 key购买 nike

我正在使用下面的行来获取设备方向

if (MediaQuery.of(context).orientation == Orientation.landscape) // Landscape
{
// Do Something
}
else // Portrait
{
// Do Something Else
}

我想获得真实的设备方向。例如,我想知道设备是 landscapeRight 还是 landscapeLeft,portraitUp 还是 portraitDown。

有人可以帮我解决这个问题吗?提前致谢。

最佳答案

有一个小部件OrientationBuilder可以帮你解决这个问题

OrientationBuilder(
builder: (context, orientation) {
return GridView.count(
// Create a grid with 2 columns in portrait mode,
// or 3 columns in landscape mode.
crossAxisCount: orientation == Orientation.portrait ? 2 : 3,
);
},
);

我看到您正在尝试将它与对话框一起使用以使其居中,如果您查看对话框的代码,您会看到它使用 ConstraninedBox 和 56.0 的步长作为填充(它将展开如果屏幕允许,它的大小为 56.0 步)。您可以使用自己的 ConstrainedBox 包装 AlertDialog 的内容,并计算最小和最大尺寸,使其看起来居中、正方形、高矩形等。

final size = MediaQuery.of(context).size;
double actionHeight = 16.0 + 36.0; //The size of the action widget, 8 padding top and bottom (16), and if ButtonBarTheme.buttonHeight == null it defaults to 36 minHeight
return AlertDialog(
scrollable: true,
title: Text('Title'),
content: ConstrainedBox(
constraints: BoxConstraints(
minWidth: (size.width / 2) - actionHeight, //do the math you want here
maxWidth: (size.width / 2) - actionHeight, //do the math you want here
minHeight: (size.height/ 2) - actionHeight, //do the math you want here
maxHeight: (size.height/ 2) - actionHeight //do the math you want here
),
child: SingleChildScrollView(
child: Column(
children: [
for(int i = 0; i < 4; i++)
ListTile(
title: Text('Text $i'),
trailing: i % 2 == 0 ?
Icon(Icons.check_box) : Icon(Icons.check_box_outline_blank)
)
],
)
)
),
actions: [
FlatButton(child: Text('Cancel'), onPressed: () => Navigator.pop(context)),
FlatButton(child: Text('Ok'), onPressed: () => Navigator.pop(context))
],
);

您可以结合 OrientationBuilder 和 ConstrainedBox 来根据方向做一些数学运算,并使其看起来像您想要的那样

enter image description here

关于Flutter 获取真正的设备方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62344573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com