From 994efc302b5780e02e01c757aa411b1bed7dd538 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Wed, 23 Jul 2025 12:36:45 +0300 Subject: [PATCH] Add `AppSnackBarsBuildContextExtension` for displaying success and failure snack bars in the app. --- lib/utils/extension/app_snack_bar.dart | 56 ++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 lib/utils/extension/app_snack_bar.dart diff --git a/lib/utils/extension/app_snack_bar.dart b/lib/utils/extension/app_snack_bar.dart new file mode 100644 index 00000000..14cb9b43 --- /dev/null +++ b/lib/utils/extension/app_snack_bar.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import 'package:syncrow_web/utils/color_manager.dart'; +import 'package:syncrow_web/utils/extension/build_context_x.dart'; + +extension AppSnackBarsBuildContextExtension on BuildContext { + void showSuccessSnackbar(String message) { + ScaffoldMessenger.of(this).showSnackBar( + _makeSnackbar( + message: message, + icon: Icons.check_circle, + backgroundColor: Colors.green, + ), + ); + } + + void showFailureSnackbar(String message) { + ScaffoldMessenger.of(this).showSnackBar( + _makeSnackbar( + message: message, + icon: Icons.error, + backgroundColor: Colors.red, + ), + ); + } + + SnackBar _makeSnackbar({ + required String message, + required Color backgroundColor, + required IconData icon, + }) { + return SnackBar( + content: Row( + mainAxisSize: MainAxisSize.min, + spacing: 8, + children: [ + Icon(icon, color: Colors.white), + Text( + message, + style: textTheme.bodyMedium?.copyWith( + color: ColorsManager.whiteColors, + ), + ), + ], + ), + backgroundColor: backgroundColor, + behavior: SnackBarBehavior.floating, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + margin: const EdgeInsetsDirectional.symmetric( + horizontal: 92, + vertical: 32, + ), + ); + } +}