Flutter制作中秋引导页

原文地址:https://juejin.cn/post/7007756651197366303

前言:看了很久,大家是真的🐂🍺,月球绕地球都整出来了,那我也来给大家整上花活~然后送上中秋祝福:月儿圆又亮,月饼圆又甜,家家团圆相聚,人人欢心甜蜜,祝你家圆人圆事事圆,中秋愉快!(各位看到文章的可否点击一下原文地址,给小T一个赞呀 ~ )

app中秋的引导界面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iogAzhTw-1631746110094)(C:\Users\Taxze\Desktop\中秋\使用\second.png)]

功能解析:

1.状态变化:背景和展示出来的诗篇与日期有关,日期不同,背景和诗篇不同
2.文字特效:中秋祝福的诗篇会一字一字慢慢浮现
3.倒计时处理:人性化,用户不想看直接跳过

1.状态变化:

我们定义一个变量date来控制状态,获取当前的日期来进行判断:

int _date = 1; //控制状态
DateTime _dateTime = DateTime.now(); //获取当前时间

然后在初始化时进行判断:

@override
  void initState() {
    super.initState();
    if (_dateTime.day <= 19) {
      ///19号之前,人们都在回家的路上
      _date = 1;
    } else if (_dateTime.day == 20) {
      ///20号,人们回到家中,吃上团圆饭
      _date = 2;
    } else if (_dateTime.day == 21) {
      ///21号,中秋快乐
      _date = 3;
    } else {
      ///中秋过后,亲人回到忙碌的生活,期盼着下一次团聚
      _date = 4;
    }
  }

关于flutter如何获取时间,我给大家列出来了(送给新人,大神看了就图一乐~)

DateTime dateTime= DateTime.now();
dateTime.day 今天是几号,int类型
dateTime.month 
dateTime.year 
dateTime.hour
dateTime.minute
dateTime.second
dateTime.millisecond
dateTime.millisecondsSinceEpoch

2.文字特效

就像开始的gif图显示的一样,文字一个个浮现出来,其实这个很简单,我们可以自己diy,但是,广大热心程序猿给我们提供了插件:animated_text_kit

使用起来也很简单:

AnimatedTextKit(
  animatedTexts: [
    TyperAnimatedText(
      "Test文字",
      textStyle: TextStyle(fontSize: 22),
      speed: const Duration(milliseconds: 200),
    ),
  ],
  isRepeatingAnimation: false,//不循环播放
)

而且还有很多很多的效果,这里给大家列了出来,需要的可以查看文章最下方的项目源码

请添加图片描述

当然,在这里也是有难点的,因为flutter的文字无法竖排,网上有改源码的(我觉得复杂了)问了下朋友,说使用RotatedBox这个widget,但是我这看个der啊,你这竖的一个妙啊!
请添加图片描述

所以最后我选择使用给每个文字后面加上/n 我直接手动换行,求求大神来告诉我解决方法(要不我自己写个插件哈哈)

3.倒计时处理

我们搞前端的必须要做一个人性化的东西给客户是不是

手动跳转加上:

int _countdown = 5;//五秒倒计时
Timer _countdownTimer;//控制倒计时

当然我们需要一个方法来控制倒计时,以及倒计时结束跳转:

void _startRecordTime() {
  _countdownTimer = Timer.periodic(Duration(seconds: 1), (timer) {
    setState(() {
      if (_countdown <= 1) {
        ///此处编写你需要跳转的界面
         _countdownTimer.cancel();
         _countdownTimer = null;
      } else {
        _countdown -= 1;
      }
    });
  });
}

当然,在倒计时结束或者跳转时,记得把界面销毁~

@override
void dispose() {
  super.dispose();
  print('启动页面结束');
  if (_countdownTimer != null && _countdownTimer.isActive) {
    _countdownTimer.cancel();
    _countdownTimer = null;
  }
}
onTap: () {
  ///点击跳过,在此处可以写跳转
  print("点击跳过,在此处可以写跳转代码,记得销毁界面哦");
},

源码地址:https://gitee.com/Xiao-Ti/autumn

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程的平行世界

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

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

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

打赏作者

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

抵扣说明:

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

余额充值