![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7cd01017a8249c6f99c6d1ec5a7ebe98.jpeg)
使用 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),
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;
});
}
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6ffdbe9ac84a98949a3a43a8427871c9.jpeg)