如何在 ListView.Builder 中右对齐卡片中的行?

Posted

技术标签:

【中文标题】如何在 ListView.Builder 中右对齐卡片中的行?【英文标题】:How to right align a Row in a card within a ListView.Builder? 【发布时间】:2021-03-06 14:40:25 【问题描述】:

我在 ListView.Builder 中对齐卡片末尾的行时遇到问题。当我申请 mainAxisAlignment: MainAxisAlignment.end 它不会像我想要的那样进入卡片的右侧。它走的正确距离因数据之前的长度而异。我究竟做错了什么?欢迎任何建议!谢谢!

这就是它的样子。我希望美元金额一直向右。

这是 ListView.Builder 的代码

              return ListView.builder(
                itemCount: transaction.length,
                shrinkWrap: true,
                itemBuilder: (context, index) 
                  return Padding(
                    padding: EdgeInsets.symmetric(vertical: 1.0, horizontal: 4.0),
                    child: Card(
                      color: (index % 2 == 0) ? greycolor : Colors.white,
                      child: Container(
                          height: 60,
                          child: Row(
                            children: <Widget>[
                              Expanded(
                                flex: 1,
                                child: Column(
                                  mainAxisAlignment: MainAxisAlignment.center,
                                children: [
                                  Container(
                                    margin: EdgeInsets.only(left: 5, top: 13),
                                    child: AutoSizeText(transaction[index].date,
                                        maxLines: 1,
                                        style: TextStyle(
                                            fontSize: 14, color: Colors.black),
                                        textAlign: TextAlign.left),
                                  ),
                                ],
                              ),),
                              Flexible(
                                flex: 3,
                                child: Column(
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: [
                                  Padding(
                                      padding: EdgeInsets.only(top: 13, left: 10),
                                      child: AutoSizeText(transaction[index].tester,
                                              maxLines: 1,
                                              style: TextStyle(
                                                  fontWeight: FontWeight.bold,
                                                  color: Colors.black,
                                                  fontFamily: 'Montserrat'),)
                                      ),
                                  Padding(
                                    padding: EdgeInsets.only(left: 10),
                                    child:
                                        AutoSizeText(
                                          '$transaction[index].test',
                                          overflow: TextOverflow.ellipsis,
                                          style: TextStyle(
                                              color: Colors.black,
                                              fontStyle: FontStyle.italic),
                                        ),
                                  ),
                                ],
                              ),),
                              Flexible(
                                child: Row(
                                  mainAxisAlignment: MainAxisAlignment.end,
                                children: [
                                  Padding(
                                    padding:
                                    EdgeInsets.only(top: 13),
                                    child: Container(
                                      child: Text(
                                          '\$$transaction[index].amount',
                                          style: TextStyle(
                                              fontSize: 16,
                                              color: Colors.black),
                                          textAlign: TextAlign.right),
                                    ),
                                  ),
                                ],
                              ),)
                            ],
                          )),
                    ),
                  );
                ,
              );

【问题讨论】:

【参考方案1】:

只需将 Flexible 替换为 Expanded

Flexible 只占用所需空间,Expanded 占用所有可用空间

请参阅this 以了解更多信息

希望对您有所帮助

【讨论】:

您可以使用位于container 内部的alignment: Alignment.right 来对齐其中的元素,而不是使用Row

以上是关于如何在 ListView.Builder 中右对齐卡片中的行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS7 中右对齐 UISearchbar 的文本

如何对齐 3 个 div 左中右? [复制]

如何在 ImGui Columns 中右对齐文本?

如何在 Android TextView 或 EditText 中右对齐文本?

CSS img align:如何在 DIV 中设置 img 中右对齐

如何在 AppKit 上的自定义 SwiftUI 表单中右对齐项目标签?