我使用Flex()
小部件在屏幕方向之间实现不同的布局,如下所示:
final _isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;
Flex(
direction: _isPortrait ? Axis.horizontal : Axis.vertical,
children: <Widget>[
Expanded(flex: _isPortrait ? 2 : 1, child: BottomButton1()),
Expanded(flex: _isPortrait ? 1 : 0, child: BottomButton2()),
],
),
当纵向为纵向时,BottomButton1()
当然是第一个孩子在左侧。
但是,当方向为横向时,我想交换BottomButton1()
和BottomButton2()
的位置,因此第一个孩子的位置现在在第二个孩子的下方。
我认为这应该对您有所帮助
class _HelperState extends State<Helper> {
RaisedButton button1 = RaisedButton(
child: Text('Button 1'),
onPressed: () {},
);
RaisedButton button2 = RaisedButton(
child: Text('Button 2'),
onPressed: () {},
);
@override
Widget build(BuildContext context) {
final _isPortrait = false;
print(_isPortrait);
return Scaffold(
body: SafeArea(
child: Center(
child: Flex(
direction: _isPortrait ? Axis.horizontal : Axis.vertical,
children: <Widget>[
Expanded(
flex: _isPortrait ? 2 : 1,
child: _isPortrait ? button1 : button2,
),
Expanded(
flex: _isPortrait ? 1 : 0,
child: _isPortrait ? button2 : button1,
),
],
),
),
),
);
}
}
很显然,您需要替换小部件中的内容,如果您需要其他任何信息,请告诉我