-
在pubspec.yaml中引入依赖框架。
#GetX依赖注解
get: ^4.6.5 -
创建一个SnackBarManager管理类去管理每个提示框。
import 'package:get/get.dart';
import 'package:flutter/material.dart';class SnackBarManager {
factory SnackBarManager() => instance;static final SnackBarManager instance = SnackBarManager._internal();
SnackBarManager._internal();
String _lastMessage = '';
int _lastDuration = 0;
int _lastTime = 0;
void showSnackBar(String title, String message, {Color? backgroundColor, Duration? duration}) {
var currentTime = DateTime.now().millisecondsSinceEpoch;
// 相同消息持续时间内重复提交时,返回
if (currentTime - _lastTime < _lastDuration * 1000 && _lastMessage == message) {
return;
}dismissSnackBar(); Get.snackbar( title, message, backgroundColor: backgroundColor ?? Colors.black12, duration: duration ?? Duration(seconds: 2), // 提示框持续时间 animationDuration: Duration(milliseconds: 0), // 过渡动画的时间,这里设置为0是为了在使用Get.dialog时避免关闭冲突 ); _lastDuration = duration?.inSeconds ?? 2; _lastTime = DateTime.now().millisecondsSinceEpoch; _lastMessage = message;}
void dismissSnackBar() {
Get.closeCurrentSnackbar();
}
} -
在任意想要的地方,直接调用即可。
SnackBarManager.instance.showSnackBar("蓝牙未开启", "请打开蓝牙");
-
效果展示

Flutter中Get.snackbar避免重复显示的实现
weixin_411191842025-01-14 13:37
相关推荐
天空之城--41 分钟前
近一周Android Flutter行业动态与实用参考GitLqr14 小时前
玩转 Flutter 项目依赖:从 pubspec.yaml 到实战包管理程序员老刘21 小时前
Qwen 3.8 max干了20分钟没干完,免费模型3分17秒搞定,问题出在哪?飞凌嵌入式1 天前
告别多端重复开发:Buildroot+Flutter实现全平台UI风格统一FungLeo1 天前
Flutter 带 TTL 的多级缓存设计:内存+磁盘+网络三层实战FungLeo1 天前
Flutter 可复用公共组件库设计与落地:AppDialog/BottomSheet 等实战Fungleo1069972 天前
Flutter/Android Release 包连不上网?AndroidManifest INTERNET 权限排查实录GitLqr2 天前
Flutter 实战:为你的 App 增加桌面快捷方式 (Quick Actions)FungLeo2 天前
Flutter 把第三方 UI 库渐进迁回 Material 3:组件映射总表 + 四批次替换实战GitLqr3 天前
iOS 27 强制要求 UISceneDelegate:UIKit 和 Flutter 开发者该如何应对?