ListTile:在尾随小部件中包装文本

yay*_*aga 0 flutter flutter-layout

我试图使用 ListTile 在左侧显示一个小标题,然后在尾随小部件中显示一个较长的文本。如果没有足够的水平空间,我的想法是让尾随文本分成多行。

我还尝试使用以下代码创建自己的磁贴:

Container(
  padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 20),
  child: Row(
    mainAxisAlignment: MainAxisAlignment.spaceBetween,
    children: <Widget>[
      Padding(
        padding: const EdgeInsets.only(right: 12),
        child: Text(
          "Campus",
          style: TextStyle(
            fontSize: 15,
            fontWeight: FontWeight.w700,
          ),
        ),
      ),
      Text(
        "20h course - New students -",
        style: TextStyle(
          fontSize: 15,
          fontWeight: FontWeight.w400,
        ),
      ),
    ],
  ),
),
Run Code Online (Sandbox Code Playgroud)

在 Pixel 2 XL 模拟器中使用此代码,因为有足够的空间,所有内容都按预期在同一行中:

在此处输入图片说明

但是当我在 Nexus One 模拟器中尝试它时,由于它的大小,这里是输出:

在此处输入图片说明

为了允许文本分成多行,我将右侧的文本包装到一个灵活的小部件中:

Container(
  padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 20),
  child: Row(
    mainAxisAlignment: MainAxisAlignment.spaceBetween,
    children: <Widget>[
      Padding(
        padding: const EdgeInsets.only(right: 12),
        child: Text(
          "Campus",
          style: TextStyle(
            fontSize: 15,
            fontWeight: FontWeight.w700,
          ),
        ),
      ),
      Flexible(
        child: Text(
          "20h course - New students -",
          style: TextStyle(
            fontSize: 15,
            fontWeight: FontWeight.w400,
          ),
        ),
      ),
    ],
  ),
),
Run Code Online (Sandbox Code Playgroud)

但问题是,即使文本被分成两行,它使用的空间也比需要的多,所以还有空余空间:

在此处输入图片说明

我还尝试使用 align 小部件将文本移动到最后,但也没有运气。有任何想法吗?

Ara*_*adi 7

用容器包裹您的文本并使其向左或向右对齐。然后重要的部分是,添加textWidthBasis: TextWidthBasis.longestLine,到您的文本。代码:

Container(
            padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 20),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.only(right: 12),
                  child: Text(
                    "Campus",
                    style: TextStyle(
                      fontSize: 15,
                      fontWeight: FontWeight.w700,
                    ),
                  ),
                ),
                Flexible(
                  child: Container(
                    alignment: Alignment.centerLeft,
                    child: Text(
                      "20h course - New students - sd f sdfsddssdfsdfs dfs df sf sdf sdf ",
                      style: TextStyle(
                        fontSize: 15,
                        fontWeight: FontWeight.w400,
                      ),
                      textWidthBasis: TextWidthBasis.longestLine,
                    ),
                  ),
                ),
              ],
            ),
          ),
Run Code Online (Sandbox Code Playgroud)