Flutter:从文本小部件中获取单个单词

Posted

技术标签:

【中文标题】Flutter:从文本小部件中获取单个单词【英文标题】:Flutter : getting single word from Text Widget 【发布时间】:2019-06-13 09:57:20 【问题描述】:

我正在尝试使用 Flutter 开发一个应用程序,向用户显示单个单词的翻译。因此,如果用户想要一个单词的翻译,那么他应该双击该单词并显示他/她的翻译。

在这里,我只是不想获得Text 小部件的String 值,但我也想获得用户双击的单词。那么有没有办法做到这一点?

【问题讨论】:

所选文本的图像示例将有助于澄清。 【参考方案1】:

您可以使用RichText 完成此操作。在我的示例中,如果您双击任何突出显示的单词,它将被打印出来。

Widget build(BuildContext context) 
  final testString = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';
  final textSpans = <TextSpan>[];

  testString.splitMapJoin(
    RegExp('\\w+'), 
    onMatch: (m) 
      final matchStr = m.group(0);

      textSpans.add(TextSpan(
        recognizer: DoubleTapGestureRecognizer()..onDoubleTap = () => print(matchStr),
        text: matchStr,
        style: TextStyle(background: Paint()..color = Colors.blue.withOpacity(0.4))
      ));
      return matchStr;
    ,
    onNonMatch: (string) 
      textSpans.add(TextSpan(
        text: string,
      ));
      return string;
    ,
  );

  return RichText(
    text: TextSpan(
      style: TextStyle(fontSize: 30),
      children: textSpans,
    ),
  );

【讨论】:

以上是关于Flutter:从文本小部件中获取单个单词的主要内容,如果未能解决你的问题,请参考以下文章

在 TextInput 小部件中设置单个单词的样式

长按时颤动选择文本

如何从有状态小部件类 Flutter 访问小部件状态

在 Flutter 中查找长按的单词

如何在 Flutter 中对齐单个小部件?

Flutter - 如何在我的未来构建器文本小部件中获得价值回报