Flutter:在RichText中启用可点击的TextSpan以进行文本选择

11

我需要在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 = () {
                  print("Flutter"); // will work here
                }),
        ],
      ),
    );
  }

  Widget _selectableRichText(BuildContext context) {
    return SelectableText.rich(
      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 = () {
                  print("Flutter"); // will not work here
                }),
        ],
      ),
    );
  }
}

1
似乎有一个未解决的问题。https://github.com/flutter/flutter/issues/43494。还要检查这个开放的SO问题:https://stackoverflow.com/questions/59556678/missing-textspans-ontap-callback-using-selectabletext-flutter - Darshan
@Darshan,感谢你的更新。是的,你说得对。这是一个bug,目前还没有解决 :( - Osama Na
1个回答

5

这个问题已经被解决了。我尝试运行您的代码片段,并验证它在Flutter 2.2上可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接