如何处理ListTile颤动中的右溢出

Posted

技术标签:

【中文标题】如何处理ListTile颤动中的右溢出【英文标题】:How to handle right overflowed inside ListTile flutter 【发布时间】:2020-09-27 03:15:10 【问题描述】:

我有 listTile 来显示标题和副标题...这是代码

ListTile(
              leading: InkWell(
                onTap: () ,
                child: Icon(Icons.fingerprint),
              ),
              title: Text("name xxx"),
              subtitle: 
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Row(
                    children: [
                      Text(
                        "xxxxxxxx",
                      ),
                      Text(
                        ' - ',
                        style: TextStyle(
                          fontSize: 10.0,
                        ),
                      ),
                      Text(
                        "yyyyyyyyyy",
                        style: TextStyle(
                          fontSize: 10.0,
                        ),
                      ),
                    ],
                  ),
                ],
              ),
              trailing: ...
            )

当我用长句子替换 xxxxxxyyyyyyy 时...我得到了 right overflowed by 69 pixels 那么,有没有办法显示我的长字幕并防止这个问题

【问题讨论】:

【参考方案1】:

您的问题有很多潜在的解决方案,我可以建议您两个简单的选择:

选项 1

如果您绝对需要显示两个 Text 小部件的所有内容,您可以将它们包装在 Wrap 中,而不是 Row

ListTile(
  leading: InkWell(
    onTap: () ,
    child: Icon(Icons.fingerprint),
  ),
  title: Text("name xxx"),
  subtitle: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [
      Wrap(
        children: [
          Text(
            "long text yeah long text long long and very long",
          ),
          Text(
            ' - ',
            style: TextStyle(
              fontSize: 10.0,
            ),
          ),
          Text(
            "Another quite long stuff, it's veeery long and by no means short",
            style: TextStyle(
              fontSize: 10.0,
            ),
          ),
        ],
      ),
    ],
  ),
),

选项 2

如果您需要您的 Row 及其所有子项保持在一行文本中,您可以使用 Flexible 包装您的 Text 小部件并指示它们处理潜在的溢出(可能使用省略号):

ListTile(
  leading: InkWell(
    onTap: () ,
    child: Icon(Icons.fingerprint),
  ),
  title: Text("name xxx"),
  subtitle: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [
      Row(
        children: [
          Flexible(
            child: Text(
              "long text yeah long text long long and very long",
              maxLines: 1,
              overflow: TextOverflow.ellipsis,
            ),
          ),
          Text(
            ' - ',
            style: TextStyle(
              fontSize: 10.0,
            ),
          ),
          Flexible(
            child: Text(
              "Another quite long stuff, it's veeery long and by no means short",
              style: TextStyle(
                fontSize: 10.0,
              ),
              maxLines: 1,
              overflow: TextOverflow.ellipsis,
            ),
          ),
        ],
      ),
    ],
  ),
),

【讨论】:

【参考方案2】:

Expanded 小部件包装Text 小部件:

                    children: [
                      const Expanded(child:
                      Text(
                        "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                          textAlign: TextAlign.justify,
                          overflow: TextOverflow.ellipsis,
                        ),
                      ),
                      Text(
                        ' - ',
                        style: TextStyle(
                          fontSize: 10.0,
                        ),
                      ),
                      const Expanded(child:
                      Text(
                        "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
                          textAlign: TextAlign.justify,
                          overflow: TextOverflow.ellipsis,
                        style: TextStyle(
                          fontSize: 10.0,
                          ),
                        ),
                      ),
                    ],

https://api.flutter.dev/flutter/widgets/Expanded-class.html

【讨论】:

嗨,在我的字幕中,我有 2 个长句子......它们是“xxx”和“yyy”......我已经尝试过你的代码,但我仍然会溢出 69 个像素...... . 有什么我应该补充的吗 它有效:D,我也尝试使用Flexible,它也有效,非常感谢您的帮助

以上是关于如何处理ListTile颤动中的右溢出的主要内容,如果未能解决你的问题,请参考以下文章

单片机环形对接溢出如何处理

如何处理 C 中的堆栈数组分配失败?

当 ListView 有 ItemTemplate 时如何处理 ListViewItem 的右键单击?

当我们尝试在颤动中使用 twitter 登录时,如何处理您的设备上未安装 twitter 异常

如何处理java中的递归Stack Overflows

如何处理溢出的文本