Flutter Flex()如何交换子位置?

问题描述 投票:0回答:1

我使用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()的位置,因此第一个孩子的位置现在在第二个孩子的下方。

flutter flutter-layout
1个回答
0
投票

我认为这应该对您有所帮助

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,
              ),
            ],
          ),
        ),
      ),
    );
  }
}

很显然,您需要替换小部件中的内容,如果您需要其他任何信息,请告诉我

© www.soinside.com 2019 - 2024. All rights reserved.