我在Flutter上构建了一个应用程序,但是我遇到了带有许多TextSpan小部件的RichText小部件,并且我需要有两个手势识别器,一个是双击的,另一个是长按的,所以如果出现这种情况,我该怎么办?有可能的?

最佳答案

每个textSpan都有其自己的textchildren属性,您可以使用它们的recognizer属性并根据需要实现不同的抽头。
考虑以下示例:

Container(
                      color: Colors.black,
                      padding: EdgeInsets.all(10),
                      child: Center(
                          child: RichText(
                            text: TextSpan( //  <-- 1
                                text: 'This is a text from first textspan. ',
                                style: TextStyle(
                                    color: Colors.grey,
                                    fontSize: 20,
                                    fontWeight: FontWeight.bold),
                                children: <TextSpan>[ //   <-- 2
                                  TextSpan(
                                      text: ' This is a text from second textspan ',
                                      style: TextStyle(
                                          fontSize: 20,
                                          fontWeight: FontWeight.bold),
                                      recognizer: LongPressGestureRecognizer()
                                        ..onLongPress = () {
                                          print('Long pressed');
                                        },
                                      children: <
                                          TextSpan>[ //  <-- 3 (children of 2 textspan
                                        TextSpan(
                                            text: ' This is a another text from second textspan',
                                            recognizer: DoubleTapGestureRecognizer()
                                              ..onDoubleTap = () {
                                                print('double tapped');
                                              }
                                        )
                                      ]
                                  ),
                                ]
                            ),
                          )
                      )
                  )

注释为children: <TextSpan>[]2具有text属性和我使用recognizer的相应LongPressGestureRecognizer()。相同的textSpan(2)具有children属性,该属性再次可以具有带有文本的子文本范围以及我使用recognizer的相应DoubleTapGestureRecognizer()

因此输出将是:您可以长按This is a text from second textspan,也可以双击This is another text from second textspan

希望这能回答您的问题。

关于flutter - Flutter中更多用于TextSpan的GestureRecognisers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57236673/

10-10 23:28