import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:sk_base_mobile/app_theme.dart'; import 'package:sk_base_mobile/util/screen_adaper_util.dart'; // SnackBar 工具 class SnackBarUtil { checkIsSnackBarInit() { return Get.overlayContext != null; } Future error(String? title, {dynamic error}) async { if (checkIsSnackBarInit()) { if (error is Exception) { title = error.toString(); } if (error is DioException) { title = error.message; if (error.response?.data is Map) { title = error.response?.data['message'] ?? title; } } if (Get.isSnackbarOpen) { await Get.closeCurrentSnackbar(); } Get.rawSnackbar( snackPosition: SnackPosition.TOP, backgroundColor: AppTheme.snackbarErrorBackgroudColor, borderRadius: ScreenAdaper.sp(15), messageText: Text( '$title', style: TextStyle( fontSize: ScreenAdaper.sp(25), color: AppTheme.nearlyWhite), ), margin: EdgeInsets.symmetric( horizontal: ScreenAdaper.width(20), vertical: 0), overlayColor: Colors.white, duration: const Duration(seconds: 3), forwardAnimationCurve: Curves.fastLinearToSlowEaseIn, reverseAnimationCurve: Curves.linearToEaseOut); } } Future success(String title, {String? message}) async { if (checkIsSnackBarInit()) { if (Get.isSnackbarOpen) { await Get.closeCurrentSnackbar(); } Get.rawSnackbar( message: title, snackPosition: SnackPosition.TOP, backgroundColor: AppTheme.snackbarSuccessBackgroudColor, borderRadius: 15, margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0), overlayColor: Colors.white, duration: Duration(seconds: 2), dismissDirection: DismissDirection.horizontal, forwardAnimationCurve: Curves.fastLinearToSlowEaseIn, reverseAnimationCurve: Curves.linearToEaseOut); } } Future info(String title, {String? message}) async { if (checkIsSnackBarInit()) { if (Get.isSnackbarOpen) { await Get.closeCurrentSnackbar(); } Get.rawSnackbar( message: title, snackPosition: SnackPosition.TOP, borderRadius: 15, margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0), duration: Duration(seconds: 2), dismissDirection: DismissDirection.horizontal, forwardAnimationCurve: Curves.fastLinearToSlowEaseIn, reverseAnimationCurve: Curves.linearToEaseOut); } } Future warning(String title, {String? message}) async { if (checkIsSnackBarInit()) { if (Get.isSnackbarOpen) { await Get.closeCurrentSnackbar(); } Get.rawSnackbar( message: title, snackPosition: SnackPosition.TOP, backgroundColor: AppTheme.snackbarWarningBackgroudColor, borderRadius: 15, margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0), overlayColor: Colors.white, duration: Duration(seconds: 2), dismissDirection: DismissDirection.horizontal, forwardAnimationCurve: Curves.fastLinearToSlowEaseIn, reverseAnimationCurve: Curves.linearToEaseOut); } } }