mobile_skt/lib/util/snack_bar.util.dart

104 lines
3.4 KiB
Dart

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<void> 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) {
Get.back();
}
Get.rawSnackbar(
snackPosition: SnackPosition.TOP,
backgroundColor: AppTheme.snackbarErrorBackgroudColor,
borderRadius: ScreenAdaper.sp(15),
messageText: Text(
'$title',
style: TextStyle(
fontSize: ScreenAdaper.height(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<void> success(String title, {String? message}) async {
if (checkIsSnackBarInit()) {
if (Get.isSnackbarOpen) {
Get.back();
}
Get.rawSnackbar(
message: title,
snackPosition: SnackPosition.TOP,
backgroundColor: AppTheme.snackbarSuccessBackgroudColor,
borderRadius: 15,
margin: EdgeInsets.symmetric(
horizontal: ScreenAdaper.height(15), vertical: 0),
overlayColor: Colors.white,
duration: const Duration(seconds: 2),
dismissDirection: DismissDirection.horizontal,
forwardAnimationCurve: Curves.fastLinearToSlowEaseIn,
reverseAnimationCurve: Curves.linearToEaseOut);
}
}
Future<void> 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: ScreenAdaper.height(15), vertical: 0),
duration: const Duration(seconds: 2),
dismissDirection: DismissDirection.horizontal,
forwardAnimationCurve: Curves.fastLinearToSlowEaseIn,
reverseAnimationCurve: Curves.linearToEaseOut);
}
}
Future<void> 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: ScreenAdaper.height(15), vertical: 0),
overlayColor: Colors.white,
duration: const Duration(seconds: 2),
dismissDirection: DismissDirection.horizontal,
forwardAnimationCurve: Curves.fastLinearToSlowEaseIn,
reverseAnimationCurve: Curves.linearToEaseOut);
}
}
}