【问题标题】:Possible to change widget position when run?运行时可以更改小部件位置吗?
【发布时间】:2019-03-15 17:05:53
【问题描述】:

应用运行时是否可以更改小部件布局?

如果bool 更改为truefalse,我想将小部件位置更改为屏幕左侧或右侧。

例如在Row 中,我在中心有小部件。但我想将外部的小部件向左或向右更改:

 return Container(

        child: new Row(
          children: <Widget>[

// Need change this widget position
            new Container(
                child:
                Text(‘Outside’)
),



            new Expanded(
              child: new Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  new Text(
                   ‘Middle’
                  ),
                ],
              ),
            ),



 //               new Container(
 //                   child:
 //                   Text(‘Outside’)
 //   ),



          ],
        ),

      );

可以更改Container 的位置吗?我尝试使用对齐,但我无法工作。

谢谢!

【问题讨论】:

  • 使用构建外部的状态变量来保存状态,使用setState() 来更新状态(这会导致build() 重新运行。在build() 中选择了不同的布局策略,具体取决于状态变量。
  • @GünterZöchbauer 感谢您的回复!我是这样做的。我的问题是是否可以在这里避免重复代码。例如,使用MainAxisAlignmentContainer 移动到另一边?
  • 所以你想要 Container() 之前或之后 Expanded() 取决于状态?您可以将 Container 存储在 build() 开头的变量中,然后根据您需要的状态添加它。 var container = ...; var expanded = ...; children: state ? &lt;Widget&gt;[container, expanded] : &lt;Widget&gt;[expanded, container ], ...
  • @GünterZöchbauer 感谢您的回复!我可以按照你的方式做,但仍然必须重复代码。没有办法可以使用对齐来做到这一点吗?
  • 我不这么认为。一项新的 Dart 功能正在进行中,以使构建列表更容易,该功能正是针对此类情况启动的。

标签: dart flutter flutter-layout


【解决方案1】:

我认为您正在寻找的是 Row 的参数textDirection。如果您将其设置为TextDirection.rtl,它应该切换其子级的顺序。我不相信这会向下传播,但您可能需要对其进行测试以确保。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多