flutter 实现中空圆形,且中间显示倒计时

// 倒计时
    Widget getCountdownStack() {
      return Stack(
        alignment: Alignment.center,
        children: [
          Container(
            width: 100,
            height: 100,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
              border: Border.all(width: 2, color: Colors.blue),
            ),
          ),
          Positioned(
            child: Text(
              '${countdownValue}S',
              style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
            ),
          ),
        ],
      );
    }
 // 倒计时
  void startCountdown() {
    const oneSecond = Duration(seconds: 1);
    Timer.periodic(oneSecond, (timer) async {
      if (countdownValue == 0) {
        timer.cancel();
      } else {
        weiPaiSelectDevice();
        if (isConnectSuccess) {
          timer.cancel();
        }
        setState(() {
          countdownValue--;
        });
      }
    });
  }
页面定义:
//倒计时
int countdownValue = 90;

页面初始化中空圆形中心展示倒计时具体值:

@override
  void initState() {
   
    //开始倒计时
    startCountdown();
  }

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter实现倒计时非常简单,你可以使用 `Timer` 类来实现。以下是一个示例代码: ```dart import 'package:flutter/material.dart'; class CountdownTimer extends StatefulWidget { final int seconds; final Function onFinished; CountdownTimer({required this.seconds, required this.onFinished}); @override _CountdownTimerState createState() => _CountdownTimerState(); } class _CountdownTimerState extends State<CountdownTimer> { late int _secondsLeft; late Timer _timer; @override void initState() { super.initState(); _secondsLeft = widget.seconds; _timer = Timer.periodic(Duration(seconds: 1), (timer) { if (_secondsLeft > 0) { setState(() { _secondsLeft--; }); } else { widget.onFinished(); _timer.cancel(); } }); } @override Widget build(BuildContext context) { return Text( '$_secondsLeft seconds left', style: TextStyle(fontSize: 20), ); } @override void dispose() { _timer.cancel(); super.dispose(); } } ``` 在上面的示例中,`CountdownTimer` 是一个自定义的组件,它接受两个参数:`seconds` 表示倒计时的总秒数,`onFinished` 表示倒计时结束时要执行的函数。在 `initState` 方法中,我们创建了一个名为 `_timer` 的 `Timer` 对象,它每隔一秒钟就会执行一次回调函数。在回调函数中,我们判断 `_secondsLeft` 是否大于 0,如果是,就将 `_secondsLeft` 减 1,并通过 `setState` 方法更新 UI;如果不是,就执行 `onFinished` 函数,并取消 `_timer` 对象。 使用该组件非常简单,只需要在需要倒计时的地方添加以下代码: ```dart CountdownTimer( seconds: 60, onFinished: () { // 倒计时结束时要执行的代码 }, ) ``` 其中 `seconds` 参数表示要倒计时的总秒数,`onFinished` 参数表示倒计时结束时要执行的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值