From ff515fb0378c53bdc991b86f934c12abc5da1085 Mon Sep 17 00:00:00 2001 From: MohammadTaha Basiri Date: Sat, 8 Jan 2022 13:04:29 +0330 Subject: [PATCH] D1APP-16 alert system updated --- lib/utils/action_sheet.dart | 49 ++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/lib/utils/action_sheet.dart b/lib/utils/action_sheet.dart index cca7c31..5e37f8e 100644 --- a/lib/utils/action_sheet.dart +++ b/lib/utils/action_sheet.dart @@ -1,6 +1,9 @@ +import 'dart:async'; + import 'package:another_flushbar/flushbar.dart'; import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; +import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/constants/assets.dart'; import 'package:didvan/models/enums.dart'; import 'package:didvan/models/view/action_sheet_data.dart'; @@ -42,13 +45,51 @@ class ActionSheetUtils { } static Future showAlert(AlertData alertData) async { + bool isInit = true; + Color backgroundColor; + Color foregroundColor; + switch (alertData.aLertType) { + case ALertType.info: + backgroundColor = Theme.of(context).colorScheme.focused; + foregroundColor = Theme.of(context).colorScheme.focusedBorder; + break; + case ALertType.success: + backgroundColor = Theme.of(context).colorScheme.successBack; + foregroundColor = Theme.of(context).colorScheme.success; + break; + case ALertType.error: + backgroundColor = Theme.of(context).colorScheme.errorBack; + foregroundColor = Theme.of(context).colorScheme.error; + break; + } await Flushbar( margin: const EdgeInsets.symmetric(horizontal: 16), - message: alertData.message, - backgroundColor: Theme.of(context).colorScheme.focused, + borderColor: foregroundColor, + backgroundColor: backgroundColor, borderRadius: DesignConfig.mediumBorderRadius, - messageColor: Theme.of(context).colorScheme.text, - flushbarPosition: FlushbarPosition.TOP, + icon: const Icon(DidvanIcons.info_circle_solid), + shouldIconPulse: true, + flushbarPosition: FlushbarPosition.BOTTOM, + messageText: StatefulBuilder(builder: (context, setState) { + if (isInit) { + Future.delayed(Duration.zero, () { + setState(() {}); + isInit = false; + }); + } + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + DidvanText(alertData.message, color: foregroundColor), + AnimatedContainer( + duration: const Duration(seconds: 2), + width: isInit ? MediaQuery.of(context).size.width - 32 : 0, + height: 2, + color: foregroundColor, + ), + ], + ); + }), duration: const Duration(seconds: 2), boxShadows: [ BoxShadow(color: Theme.of(context).colorScheme.cardBorder),