flutter的Toast (Android的一样动画)

这里写自定义目录标题

在这里插入图片描述

使用 Toast

Toast(context: context, text: "Hello Flutter!");

使用 WidgetToast

 Toast(
        context: context,
        child: Container(
            margin: const EdgeInsets.all(10),
            height: 50,
            width: 50,
            color: Colors.blue,
            child: const Icon(Icons.ac_unit)));

使用方法

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

class Toast {
  final BuildContext context;
  final String? text;
  final Widget? child;
  late OverlayEntry overlayEntry;

  Toast({required this.context, this.text, this.child}) {
    int sum = 0;
    overlayEntry = OverlayEntry(builder: (context) {
      return AnimatedPadding(
          padding: EdgeInsets.only(top: sum < 8 && sum > 0 ? 200 : 400),
          duration: const Duration(milliseconds: 500),
         // curve: Curves.fastLinearToSlowEaseIn,
          child: AnimatedSwitcher(
              duration: const Duration(milliseconds: 500),
              reverseDuration: const Duration(milliseconds: 500),
              child: sum < 8 && sum > 0
                  ? Material(
                      shape: ContinuousRectangleBorder(
                        borderRadius: BorderRadius.circular(25),
                      ),
                      shadowColor: const Color(0x6F656565),
                      elevation: 10,
                      child: Padding(
                        padding: const EdgeInsets.only(
                            left: 15, right: 15, top: 10, bottom: 10),
                        child: child ??
                            Text(
                              text ?? "",
                              style: const TextStyle(
                                  color: Colors.black,
                                  fontFamily: 'izdanfont',
                                  fontSize: 18),
                            ),
                      ))
                  : const SizedBox.shrink()));
    });
    Overlay.of(context)?.insert(overlayEntry);
    Timer.periodic(const Duration(milliseconds: 500), (timer) {
      overlayEntry.markNeedsBuild();
      if (sum > 8) {
        timer.cancel();
        overlayEntry.dispose();
        overlayEntry.remove();
      }
      sum = sum + 1;
    });
  }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值