使文本连续可单击,并处理溢出

时间:2019-09-27 18:58:52

标签: flutter flutter-layout

我希望由变量location标识的字符串是可单击的,如果它溢出,请使用省略号来隐藏溢出的字符。但是,如果location足够短,不需要省略号,那么我不希望该行中的剩余空间可点击

Row(
    children: <Widget>[
        Text('Location: '),
        Expanded(
            child: InkWell(
                onTap: () { // do something },
                child: Text(
                    '$location',
                    overflow: TextOverflow.ellipsis,
                ), // Text
            ), // InkWell
        ), // Expanded
    ], // <Widget>[]
),

我也尝试使用TextSpan,但是发生了同样的事情-如果location太短,则其右侧的空格也会对抽头区域起反应

RichText(
    text: TextSpan(
        children: [
            TextSpan(text: 'Location: '),
            TextSpan(
                text: '$location',
                recognizer: TapGestureRecognizer()
                            ..onTap = () {
                                // do something
                            },
            ),
        ],
    ),
),

1 个答案:

答案 0 :(得分:1)

要使$ location仅可单击,只需用“ Flexible”替换“ Expanded” ,因为Flexible会将窗口小部件的尺寸缩小为其内容,而不是其父级的尺寸,例如Expanded,例如:

child: Row(
  children: <Widget>[
    Text('Location: '),

    // Replace "Expanded" with "Flexible"
    Flexible(
      child: InkWell(
        onTap: () {},
        child: Text(
          '$location',
          overflow: TextOverflow.ellipsis,
        ), // Text
      ), // InkWell
    ), // Flexible
  ], // <Widget>[]
),