flutter 平移动画

import 'dart:ui';

import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

import '../../common/Global.dart';

class TextClass extends StatefulWidget {
  const TextClass({
    Key? key,
  }) : super(key: key);

  @override
  State<StatefulWidget> createState() => TextClassState();
}

class TextClassState extends State<TextClass>
    with SingleTickerProviderStateMixin {
//动画控制器
  late AnimationController controller;
  late Animation<Offset> animation;

  @override
  void initState() {
    controller =
        AnimationController(duration: const Duration(seconds: 2), vsync: this);//两秒的时间完成该动画
    animation =
        Tween(begin: Offset(0, 0), end: Offset(0, 1)).animate(controller);//这个设置就是向下移动
    super.initState();
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Stack(
      alignment: Alignment.topCenter,
      children: [
        Positioned(
          top: -(100-Global.topHeight),//通过Stack把控件放到手机状态栏上面
            child: GestureDetector(
          onTap: () {
            if(controller.isCompleted||controller.isDismissed)
            controller.forward();//向下滑动,就做出了在手机顶部,向下滑动显示,向上滑动消失
          },
          child: SlideTransition(
            position: animation,
            child: Container(
              color: Colors.red,
              width: 100,
              height: 100,
              child: Text('移动动画测试'),
            ),
          ),
        )),
      ],
    );
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值