flutter怎么实现倒计时加载页面

发布时间:2022-03-24 09:11:30 作者:iii
来源:亿速云 阅读:454

本篇内容主要讲解“flutter怎么实现倒计时加载页面”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“flutter怎么实现倒计时加载页面”吧!

效果图

flutter怎么实现倒计时加载页面

实现步骤

1、pubspec.yaml中添加依赖 flustars,该包的TimelineUtil和TimerUtil类可以实现计时功能

dependencies:
  flustars: ^0.3.3

!注意空格哦

2、代码实现

初始化TimerUtil

late TimerUtil util;  
double current_time = 0;
void initState() {
    super.initState();

    util = new TimerUtil(mInterval: 18, mTotalTime: 5000);

    util.setOnTimerTickCallback((millisUntilFinished) {
      setState(() {
        //每次时间间隔回调,把每次当前总时间ms除以1000就是秒
        current_time = millisUntilFinished / 1000;
        //倒计时结束时 跳转到首页 当然也可以等待资源加载完成再跳转
        if (current_time == 0) {
          /*等待资源完成代码块*/
          //跳转到首页
          Navigator.push(
              context, MaterialPageRoute(builder: (context) => HomePage()));
        }
      });
    });

构造页面

 Widget build(BuildContext context) {
    return Scaffold(
        body: Column(
      children: [
        Image.asset('images/2.0/beijing.jpg'),
        Container(
          alignment: Alignment.centerRight,
          child: SizedBox(
              height: 50,
              width: 50,
              child: Stack(
                children: [
                  Center(child: CircularProgressIndicator(
                    value: current_time == 5.0 ? 0 : (5 - current_time) / 5,
                  ),),
                  Center(child: Text('${current_time.toInt()}'),)
                ],)
          ),
        ),

      ],
    ));
  }

完整代码

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

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

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


class LoadingPage extends StatefulWidget {
  const LoadingPage({Key? key}) : super(key: key);
  @override
  _LoadingPageState createState() => _LoadingPageState();
}   

class _LoadingPageState extends State<LoadingPage> {
  late TimerUtil util; //计时对象
  double current_time = 0; //当前时间
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Column(
      children: [
        Image.asset('images/2.0/beijing.jpg'),
        Container(
          alignment: Alignment.centerRight,
          child: SizedBox(
              height: 50,
              width: 50,
              child: Stack(
                children: [
                  Center(child: CircularProgressIndicator(
                    value: current_time == 5.0 ? 0 : (5 - current_time) / 5,
                  ),),
                  Center(child: Text('${current_time.toInt()}'),)

                ],)
          ),
        ),

      ],
    ));
  }

  @override
  void initState() {
    super.initState();

    util = new TimerUtil(mInterval: 18, mTotalTime: 5000);

    util.setOnTimerTickCallback((millisUntilFinished) {
      setState(() {
        //每次时间间隔回调,把每次当前总时间ms除以1000就是秒
        current_time = millisUntilFinished / 1000;
        //倒计时结束时 跳转到首页 当然也可以等待资源加载完成再跳转
        if (current_time == 0) {
          /*等待资源完成代码块*/
          //跳转到首页
          Navigator.push(
              context, MaterialPageRoute(builder: (context) => HomePage()));
        }
      });
    });

    //开始倒计时
    util.startCountDown();
  }
}

class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('HomePage'),
      ),
    );
  }
}

到此,相信大家对“flutter怎么实现倒计时加载页面”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. 使用JavaScript怎么实现懒加载页面数据
  2. jQuery如何实现页面倒计时并刷新效果

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

flutter

上一篇:Java的Synchronized原理与Callable接口实例分析

下一篇:Python怎么用jmespath模块进行json数据处理

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》