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

时间:2019-01-19 09:38:05

标签: dart flutter

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

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

1 个答案:

答案 0 :(得分:0)

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

1

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,
    ),
  );
}