D1APP-16 alert system updated

This commit is contained in:
MohammadTaha Basiri 2022-01-08 13:04:29 +03:30
parent 86dc173932
commit ff515fb037
1 changed files with 45 additions and 4 deletions

View File

@ -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<void> 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),