Я пытаюсь разработать приложение с использованием Flutter, которое показывает пользователю перевод одного слова. Поэтому, если пользователь хочет перевести слово, он должен дважды нажать на это слово, и оно покажет ему/ей перевод.
Здесь я просто не хочу получать значение String виджета Text, но я также хочу получить слово, на которое дважды нажал пользователь. Так есть ли способ сделать это?





Сделать это можно с 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,
),
);
}
Пример изображения выделенного текста поможет уточнить.