Flutter列表中倒计时-创新互联

1、在实体类中增加Timer类型的字段

为竞秀等地区用户提供了全套网页设计制作服务,及竞秀网站建设行业解决方案。主营业务为成都网站建设、做网站、竞秀网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
bean{Timer timer;
  var countdownSeconds;//倒计时剩余秒数
  String showTimeName;//显示在item中的字符串
}

2、在获取到接口数据后开启倒计时

_httpExpressList(){HttpApplication.getInstance().expressList(callBack: (result){  if(result !=null){var dataList = result['list'] as List;
        var dateNo = DateTime.now();
        for(int i = 0; i< dataList.length; i++){  PromotionExpressItemBean _promotionExpressItemBean = PromotionExpressItemBean.fromJson(dataList[i]);
          var diff = DateCountDownUtil.difference(_promotionExpressItemBean.endTime,dateNo);
          _promotionExpressItemBean.countdownSeconds = diff;
          _promotionExpressItemBean.timer = _startTimer(_promotionExpressItemBean);
          _promotionExpressList.add(_promotionExpressItemBean);
        }
        setState(() {});
      }

    },errorCallBack: (error){});
  }

_cancelTimer(){if(_promotionExpressList.length>0){  for(int i =0;i<_promotionExpressList.length;i++){_promotionExpressList[i].timer.cancel();
      }
    }
  }

  _startTimer(PromotionExpressItemBean promotionExpressItemBean){return Timer.periodic(Duration(seconds: 1), (timer){  promotionExpressItemBean.countdownSeconds -=1;
      promotionExpressItemBean.showTimeName = DateCountDownUtil.constructTime(promotionExpressItemBean.countdownSeconds);
       //DateCountDownUtil转天时分秒的工具类
      if(promotionExpressItemBean.countdownSeconds<=0){promotionExpressItemBean.timer.cancel();
        promotionExpressItemBean.showTimeName="已结束";
      }
      setState(() {  });
    });
  }

  @override
  void dispose() {// TODO: implement dispos
    _cancelTimer();
    super.dispose();
  }

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文标题:Flutter列表中倒计时-创新互联
标题来源:http://ybzwz.com/article/cojhhj.html