一行内的容器对齐

Container alignment inside a row

我想知道如何将 3 个不同的容器对齐成一行,这样 2 个留在左边,1 个留在右边。

像这样:http://prntscr.com/tovlhw.

我的方法只适用于这个 AVD,因为它使用像素来确定位置。


 
            GestureDetector(
            onTap: (){
              Navigator.push(context, MaterialPageRoute(builder: (context) => Favoritos()));
    },
                child: Row(
                   mainAxisAlignment: MainAxisAlignment.start,
                    children: <Widget>[
                         Container(
                            padding: EdgeInsets.fromLTRB(10,16,0,16),
                             color: Colors.white,
                                  child: Icon(Icons.favorite),
                                                                       ),

                           Container(
                              padding: EdgeInsets.fromLTRB(5,20,140,20),
                              color: Colors.white,
                                   child: Text('Favoritos'),
                                                                        ),

                           Container(
                              padding: EdgeInsets.fromLTRB(145,16,5,16),
                                color: Colors.white,
                                      child: Icon(Icons.keyboard_arrow_right),
                                                                        ),


    ],
    ),
    ),


这可以通过 ListTile 小部件和 Card 小部件轻松完成(如果您还想要背景颜色):

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Card(
      color: Colors.white,
      child: ListTile(
        title: Text(
          'Favourite',
          style: TextStyle(color: Colors.black),
        ),
        leading: Icon(Icons.favorite, color: Colors.black),
        trailing: Icon(Icons.arrow_right, color: Colors.black),
      ),
    );
  }
}

结果

如果您想使用 Row 方法,请像这样使用 Spacer: 还请记住,您可以使用 Container height 属性 使您的行更大。

Container(
      color: Colors.white,
      child: Row(
        children: <Widget>[
          Icon(Icons.favorite, color: Colors.black),
          SizedBox(
            width: 10.0, // give the witdh you want between icon and text
          ),
          Text(
            'Favourite',
            style: TextStyle(color: Colors.black),
          ),
          Spacer(),
          Icon(Icons.arrow_right, color: Colors.black),
        ],
      ),
    );

结果:

用一行mainAxisAlignment: MainAxisAlignment.spaceBetween,将两个children左右均匀对齐,其中children为:

1) A包含要放置在左侧的 2 个项目的行
2) 包含要放置在右侧的项目的容器

检查这是否解决了您的问题

这适用于任何目的,但 ListTile 是适合您的情况的方法

使用以下方法解决:

                width: MediaQuery.of(context).size.width
Container(
height: 100px
width:MediaQuery.of(context).size.width,
child:ListTile(
leading:Icon(Icons.favorite),
  title: Text(
      'Favourite',
    ),
    trailing: Icon(Icons.arrow_right),
)
)

嗨,我建议您将行 class 包裹在一个容器 class 中,并尽可能地设置容器的高度和宽度。这将为该行提供完整的矩形区域,然后您可以将行 class 的子项对齐到任何您想要的位置。

Container(
        height: MediaQuery.of(context).size.height,
        padding: EdgeInsets.all(16),
        child:  Column(
            children: [
              Padding(
                padding: EdgeInsets.only(top: MediaQuery.of(context).size.height*0.08),
              ),
              Container(
                alignment: Alignment.centerRight,
                child: RaisedButton(
                ),
              ),
              Container(
                  alignment: Alignment.centerLeft,
                  child: Text()
              ),
             Container(
                alignment: Alignment.centerRight,
                padding: EdgeInsets.only(top: 28),
                child: RaisedButton(
                  child: Text('Submit',style: TextStyle(color: Colors.white),),
                ),
              ),
            ],
          ),
          ),