颤振-连续两个文本,左边一个优美地溢出

时间:2018-06-28 16:30:32

标签: flutter flutter-layout

如何获取两个并排的文本小部件,以仅允许最左边的一个小部件正常溢出?

一列中的一个文本小部件很容易优雅地溢出。 并排放置两个文本小部件是有问题的。

堆栈溢出需要更多细节,但老实说,我现在可能只是在浪费更多时间。

Widget _listItem({String title, String subtitle}){
  return Row(
    children: <Widget>[
      _listItemIcon(),
      Expanded(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            _listItemTitle(title),
            Row(
              children: <Widget>[
                _listItemSubtitle(subtitle), // how do I allow this to overflow gracefully
                _listItemTime("2m") // but stop this from overflowing
              ],
            )
          ],
        ),
      ),
      _listItemFavorite()
    ],
  );
}

//////////////
Widget _listItemIcon(){
  return Icon(Icons.message);
}

Widget _listItemTitle(String title){
  return Text(
    title,
    softWrap: false,
    overflow: TextOverflow.fade,
    style: TextStyle(
      fontSize:24.0
    ),
  );
}

Widget _listItemSubtitle(String subtitle){
  return Text(
    "[$subtitle]",
    softWrap: false,
    overflow: TextOverflow.fade,
    );
}

Widget _listItemTime(String time){
  return Text(
    "[$time]",
    softWrap: false,
    overflow: TextOverflow.fade,
    );
}

Widget _listItemFavorite(){
  return Icon(Icons.favorite);
}

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以使用Flexible小部件:

Widget _listItemSubtitle(String subtitle) {
  return new Flexible(
    fit: FlexFit.loose,
    child: Text(
      "[$subtitle]",
      softWrap: false,
      overflow: TextOverflow.fade,
    ),
  );
}

result


替代:

如果您希望时间窗口小部件始终位于右侧,则可以将字幕文本包装在Expanded小部件中:

Widget _listItemSubtitle(String subtitle){
  return Expanded(
    child: Text(
      "[$subtitle]",
      softWrap: false,
      overflow: TextOverflow.fade,
    ),
  );
}

result

答案 1 :(得分:1)

可以使用one_px_only_default: 1.0 one_px_with_mdpi_px: Resource not found! one_px_with_mdpi_dp: Resource not found! one_px_with_mhdpi_dp: Resource not found! one_px_with_hdpi_dp: Resource not found! one_dp_with_mdpi_dp: Resource not found! one_dp_with_mdpi_px: Resource not found! one_dp_with_mhdpi_dp: Resource not found! one_dp_with_mhdpi_px: Resource not found! one_dp_with_hdpi_dp: Resource not found! one_dp_with_hdpi_px: Resource not found! one_dp_with_xhdpi_half: Resource not found! one_dp_with_xhdpi_half_and_hdpi_fractiondp: Resource not found! one_dp_with_xhdpi_px_and_hdpi_fractiondp: Resource not found! one_dp_with_xxhdpi_px_and_hdpi_fractiondp_thin: Resource not found! Expanded小部件来调整小部件的大小以适合行或列。要修复前面的示例,其中文本行对于其渲染框而言太宽,请用FlexibleExpanded小部件包装每个文本。

也许您希望小部件占据其同级部件两倍的空间。为此,请使用Flexible小部件Expanded属性,该属性是确定小部件的弹性系数的整数。默认的弹性系数为1。以下代码将中间图像的弹性系数设置为2:

flex