这几天想着需要一个Flutter的Toast, 一开始的想法就是自己定义一个简单用用, 也看到有人提供了相关的 fluttertoast组件, 但是因为是学习Flutter, 所以感觉还是自己实现一个比较好, 索性网络上也有不少方法…
这里主要是使用Overlay来进行Toast的实现, 用过RN的teaset 基本对Overlay不陌生, 当然还是需要重新认识一下Flutter下的Overlay
Flutter 89: 图解基本 Overlay 悬浮新手引导
Flutter 使用 Overlay 实现全局弹窗
所以 基本的实现代码就是 创建一个OverlayEntry 条目, 塞到某个 Overlay.of(context) 中去, 然后再用定时器延迟删除即可
class ToastUtils {
static void show(BuildContext context,String msg, {
int duration}) {
/// 收起键盘
FocusScope.of(context).requestFocus(FocusNode());
/// 新建待插入到Overlay的条目entry
OverlayEntry entry = OverlayEntry(builder: (context) {
return Container(
color: Colors.yellow,
alignment: Alignment.center,
width: DeviceUtils.screenW,
height: DeviceUtils.screenH,
child