import 'package:flutter/gestures.dart'; class _GestureRecognizer extends StatefulWidget { const _GestureRecognizer({Key? key}) : super(key: key); @override _GestureRecognizerState createState() => _GestureRecognizerState(); } class _GestureRecognizerState extends State<_GestureRecognizer> { TapGestureRecognizer _tapGestureRecognizer = TapGestureRecognizer(); bool _toggle = false; //变色开关 @override void dispose() { //用到GestureRecognizer的话一定要调用其dispose方法释放资源 _tapGestureRecognizer.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Center( child: Text.rich( TextSpan( children: [ TextSpan(text: "你好世界"), TextSpan( text: "点我变色", style: TextStyle( fontSize: 30.0, color: _toggle ? Colors.blue : Colors.red, ), recognizer: _tapGestureRecognizer ..onTap = () { setState(() { _toggle = !_toggle; }); }, ), TextSpan(text: "你好世界"), ], ), ), ); } }
Flutter TextSpan有一个recognizer属性,它可以接收一个GestureRecognizer
14 min read