我需要在 RichText 中启用文本选择。当用户单击特定的 TextSpan 时,我还需要调用一些代码。
我厌倦了运行下面的代码。但我注意到这onTap仅适用于_nonSelectableRichText(),而不适用于_selectableRichText.
我不知道这是否是一个错误……但我问是否有人有结合这两个功能的解决方案?
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
class TestPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Builder(
builder: (context) => Container(
child: _nonSelectionRichText(context),
//child: _selectionRichText(context),
),
),
),
);
}
Widget _nonSelectableRichText(BuildContext context) {
return RichText(
text: TextSpan(
children: [
TextSpan(
text: "Welcome to ",
style: TextStyle(color: Colors.black, fontSize: 70)),
TextSpan(
text: "Flutter",
style: TextStyle(color: Colors.black, fontSize: 70),
recognizer: TapGestureRecognizer()
..onTap = () { …Run Code Online (Sandbox Code Playgroud) 我有一个大段落,很多单词必须有工具提示消息。当您单击这些单词中的任何一个时,应该会出现工具提示消息。
我尝试使用 RichText 小部件,其中包含许多TextSpan子项,如下所示:
RichText(
text: TextSpan(
children: <TextSpan>[
TextSpan(text: "Welcome to"),
TextSpan(text: "Flutter"),
...
]),
),
Run Code Online (Sandbox Code Playgroud)
TextSpan
当我单击“我尝试用小部件换行”TextSpan时,我需要显示工具提示Tooltip文本
RichText(
text: TextSpan(
children: <TextSpan>[
TextSpan(text: "Welcome to"),
...
Tooltip(
message: "any text here",
child: TextSpan(text: "Flutter"),
),
...
]),
),
Run Code Online (Sandbox Code Playgroud)
但这是不可能的,因为孩子们必须是TextSpan唯一的。
有人知道如何实现这个要求吗?