【Flutter】实现按钮点击后显示一个60秒的倒计时效果

要实现按钮点击后显示一个60秒的倒计时效果,可以结合使用Flutter的Timer类和setState方法来更新按钮的文本内容。
以下是示例代码:

import 'package:flutter/material.dart';
import 'dart:async';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _buttonText = 'Click Me';
  bool _buttonEnabled = true;

  void _startCountdown() {
    setState(() {
      _buttonEnabled = false;
      _buttonText = '60s'; // 初始文本为60s
    });

    int count = 60;
    Timer.periodic(Duration(seconds: 1), (timer) {
      setState(() {
        count--;
        if (count > 0) {
          _buttonText = '$count s'; // 更新按钮文本为倒计时数字
        } else {
          _buttonText = 'Click Me';
          _buttonEnabled = true;
          timer.cancel(); // 取消定时器
        }
      });
    });
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Countdown Button Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _buttonEnabled ? _startCountdown : null,
          child: Text(_buttonText),
        ),
      ),
    );
  }
}

在这个示例中,当用户点击按钮后,按钮的文本会显示60秒的倒计时,每秒更新一次。倒计时结束后按钮文本会恢复为"Click Me",按钮恢复可点击状态。

这段代码利用了Timer.periodic来实现每秒更新按钮文本的功能。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲁正杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值