Flutter中Get.snackbar避免重复显示的实现

  1. 在pubspec.yaml中引入依赖框架。

    #GetX依赖注解
    get: ^4.6.5

  2. 创建一个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();
    }
    }

  3. 在任意想要的地方,直接调用即可。

    SnackBarManager.instance.showSnackBar("蓝牙未开启", "请打开蓝牙");

  4. 效果展示

相关推荐
牛马1116 小时前
Flutter Web性能优化标签解析
前端·flutter·性能优化
恋猫de小郭7 小时前
Flutter 3.38.1 之后,因为某些框架低级错误导致提交 Store 被拒
android·前端·flutter
菩提祖师_7 小时前
量子机器学习在时间序列预测中的应用
开发语言·javascript·爬虫·flutter
消失的旧时光-19437 小时前
Freezed + json_serializable:DTO / Domain 分层与不可变模型(入门到落地)-----上篇
flutter·json·dto·domain
程序员老刘·8 小时前
谷歌有没有画饼?Flutter 2025 路线图完成度核验
flutter·跨平台开发·客户端开发
菩提祖师_8 小时前
量子计算在网络安全中的应用
开发语言·javascript·爬虫·flutter
菩提祖师_8 小时前
基于Docker的微服务自动化部署系统
开发语言·javascript·flutter·docker
牛马1118 小时前
Flutter Web性能优化标签解析(二)
前端·javascript·flutter
走在路上的菜鸟8 小时前
Android学Flutter学习笔记 第三节 Android视角认知Flutter(触摸事件,List,Text,Input)
android·学习·flutter
kirk_wang8 小时前
Flutter `audio_service` 在鸿蒙端的后台音频服务适配实践
flutter·移动开发·跨平台·arkts·鸿蒙