【自学Flutter】27.4 手势识别(GestureRecognizer的使用)

本文介绍了一个使用Flutter的GestureRecognizer实现手势识别的例子,通过TapGestureRecognizer监听点击事件,改变TextSpan中的文字颜色,展示了如何在Flutter中集成手势识别功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

27.4 手势识别(GestureRecognizer的使用)

1.源代码
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

void main () => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
  bool flag = false;

  @override
  void dispose() {
    tapGestureRecognizer.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          appBar: AppBar(title: Text("手势检测"),),
          body: Center(
              child: Text.rich(
                TextSpan(
                  children: [
                    TextSpan(
                      text: "我是一个"
                    ),
                    TextSpan(
                      text: "点我变色",
                      style: TextStyle(fontSize: 20.0,color: flag ? Colors.red : Colors.blue),
                      recognizer: tapGestureRecognizer..onTap = (){
                        setState(() {
                          flag = !flag;
                        });
                      },
                    ),
                    TextSpan(
                        text: "的TextSpan!"
                    ),
                  ]
                )
              ),
              )
          ),
    );
  }
}
2.解释源代码
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

void main () => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  //声明一个TapGestureRecognizer
  //导包import 'package:flutter/gestures.dart';
  TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
  //是否变色标识
  bool flag = false;

  //使用GestureRecognizer后一定要调用其dispose()方法来释放资源(主要是取消内部的计时器)
  @override
  void dispose() {
    tapGestureRecognizer.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          appBar: AppBar(title: Text("手势检测"),),
          body: Center(
              child: Text.rich(
                TextSpan(
                  children: [
                    TextSpan(
                      text: "我是一个"
                    ),
                    TextSpan(
                      text: "点我变色",
                      style: TextStyle(fontSize: 20.0,color: flag ? Colors.red : Colors.blue),
                      recognizer: tapGestureRecognizer..onTap = (){
                        setState(() {
                          flag = !flag;
                        });
                      },
                    ),
                    TextSpan(
                        text: "的TextSpan!"
                    ),
                  ]
                )
              ),
              )
          ),
    );
  }
}
3.效果图

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值