Flutter:如何将小部件与列的topRight对齐?

时间:2019-03-20 10:58:40

标签: flutter flutter-layout

根据这个答案,我正在尝试将我的“更多选项”按钮对准列中的右上角。

How to align single widgets in Flutter?

这是我的代码。

return Card(
      color: Colors.blueAccent,
      child: Container(
        height: 100,
        width: 350,
        child: Column(
          children: <Widget>[
            Text(
              'Day ${widget._dayNumber}',
              style: TextStyle(
                color: Colors.white,
              ),
            ),
            Align(alignment: Alignment.topRight,
             child: IconButton(onPressed: () {}, icon: Icon(Icons.more_vert),)),

          ],
        ),
      ),
    );

Text first, then align

如果我更改对齐方式和文本的顺序,就会发生这种情况。

align first, then text

我想在右上角显示我的按钮,同时将“文本”窗口小部件保持在中心顶部,但是“对齐”窗口小部件似乎占据了整行。

有没有一种方法可以正确实现这一目标,或者我需要将它们都包装成一行?

2 个答案:

答案 0 :(得分:1)

如果要将它们放在同一Row中,则需要用Column包装 enter image description here

  return Card(
    color: Colors.blueAccent,
    child: Container(
      height: 100,
      width: 350,
      child: Column(
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              Container(),
              Text(
                'Day 1',
                style: TextStyle(
                  color: Colors.white,
                ),
              ),
              IconButton(
                onPressed: () {},
                icon: Icon(Icons.more_vert),
              ),
            ],
          ),
        ],
      ),
    ),
  );

答案 1 :(得分:1)

我已经使用Stack and Positioned小部件来实现这种效果。

Final

Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        Card(
          color: Colors.blueAccent,
          child: Container(
            height: 100,
            width: 350,
            child: Column(
              children: <Widget>[
                Text(
                  'Day ${widget._dayNumber}',
                  style: TextStyle(
                    color: Colors.white,
                  ),
                ),
              ],
            ),
          ),
        ),
        Positioned(
          top: 0,
          right: 0,
          child: IconButton(
            onPressed: () {},
            icon: Icon(Icons.more_vert),
          ),
        ),
      ],
    );
  }