gpt4 book ai didi

android - Flutter:如何构建改变移动设备方向时移动 block 的逻辑?

转载 作者:行者123 更新时间:2023-11-29 05:11:34 25 4
gpt4 key购买 nike

使用 flutter,我需要在移动设备中放置两个 block ,以便:

  • 处于垂直位置block_A位于顶部,并且 block_B位于底部
  • 处于水平位置 block_A位于左侧并且block_B右侧

image of result


我是通过Wrap实现的,根据当前屏幕的宽度设置 block 的宽度,Wrap自动放下 block 。但我不确定这是否是正确的决定。

class MainPage extends StatelessWidget {

Widget build(BuildContext context) {

var screenSize = MediaQuery.of(context).size;
double mainBoxWidth = screenSize.width / 100 * (screenSize.width > screenSize.height ? 50 : 100) ;
double mainBoxHeight = screenSize.height / 100 * (screenSize.width > screenSize.height ? 100 : 50) ;

return Scaffold(
body: Center(
child: Wrap(
children: [

Container(
child: Center(
child: Text("block_A"),
),
width: mainBoxWidth,
height: mainBoxHeight,
),


Container(
child: Center(
child: Text("block_B"),
),
width: mainBoxWidth,
height: mainBoxHeight,
),

],
),
),
backgroundColor: Colors.green
);
}
}

请告诉我如何正确执行此任务。谢谢。

最佳答案

与 Flutter 中的大多数事情一样,有几种方法可以实现这一点。这是一种方法:

class MainPage extends StatelessWidget {
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
final isLandscape = screenSize.width > screenSize.height;
return Scaffold(
body: isLandscape
? Row(
children: _buildChildren(),
)
: Column(
children: _buildChildren(),
),
backgroundColor: Colors.white,
);
}

List<Widget> _buildChildren() {
return [
Expanded(
child: Container(
color: Colors.yellow,
child: Center(
child: Text("block_A"),
),
),
),
Expanded(
child: Container(
color: Colors.green,
child: Center(
child: Text("block_B"),
),
),
),
];
}
}

关于android - Flutter:如何构建改变移动设备方向时移动 block 的逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59631034/

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