颤振行在开始时放置一项,在中间放置另一项

时间:2019-01-23 12:31:46

标签: flutter flutter-layout

我有一张卡,该卡的第一行包含2个文本项。

我想在开始时放置一个项目,然后直接在中心放置下一个项目。

我玩过MainAxisAlignment,但是似乎没有任何办法满足这种情况,例如,如果我使用MainAxisAlignment.spaceBetween,则将每个项目放置在行的末尾。

有明显的方法吗?

谢谢

3 个答案:

答案 0 :(得分:2)

您可以使用Spacer小部件来填充行中的可用空间:

void main() => runApp(App());

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: SpacedRow(),
          ),
        ),
      ),
    );
  }
}

class SpacedRow extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Row(
      children: <Widget>[
        Container(width: 50, height: 50, color: Colors.red),
        Spacer(),
        Container(width: 50, height: 50, color: Colors.yellow),
        Spacer(),
      ],
    );
  }
}

产生:

Screenshot

答案 1 :(得分:0)

您可以使用Spacer()Expandable()Flex()MainAxisAlignment.spaceBetween,但是在这里您可能需要提供padding。有很多方法可以实现这一目标。如果您可以共享屏幕截图或代码,我们可以相应地发布代码。

答案 2 :(得分:0)

尽管约旦的回答达到了上述问题,但黄色方块看上去并不完全居中。我尝试了以下操作

Stack(
          children: <Widget>[
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              mainAxisSize: MainAxisSize.max,
              children: <Widget>[
                Image.asset(
                  "images/toolbar_logo.webp",
                  width: 80,
                  height: 50,
                ),
              ],
            ),
            IconButton(
              icon: Icon(Icons.navigation),
              onPressed: () {},
              iconSize: 20,
            ),
          ],
        ),