showCustomSnackBar method
Future?
showCustomSnackBar(
{ - required String message,
- TextStyle? messageTextStyle,
- required dynamic variant,
- String? title,
- TextStyle? titleTextStyle,
- String? mainButtonTitle,
- ButtonStyle? mainButtonStyle,
- void onMainButtonTapped()?,
- Function? onTap,
- Duration duration = const Duration(seconds: 1),
})
Implementation
Future? showCustomSnackBar({
required String message,
TextStyle? messageTextStyle,
required dynamic variant,
String? title,
TextStyle? titleTextStyle,
String? mainButtonTitle,
ButtonStyle? mainButtonStyle,
void Function()? onMainButtonTapped,
Function? onTap,
Duration duration = const Duration(seconds: 1),
}) async {
final snackbarConfigSupplied = _customSnackbarConfigs[variant];
final snackbarConfigBuilder = _customSnackbarConfigBuilders[variant];
final snackbarConfig = snackbarConfigBuilder != null
? snackbarConfigBuilder()
: snackbarConfigSupplied;
if (snackbarConfig == null) {
throw CustomSnackbarException(
'No config found for $variant make sure you have called registerCustomConfig with a config or a builder. See [https://pub.dev/packages/stacked_services#custom-styles] for implementation details.',
);
}
final mainButtonBuilder = _mainButtonBuilder[variant];
final hasMainButtonBuilder = mainButtonBuilder != null;
final mainButtonWidget = hasMainButtonBuilder
? mainButtonBuilder!(mainButtonTitle, onMainButtonTapped)
: _getMainButtonWidget(
mainButtonTitle: mainButtonTitle,
mainButtonStyle: snackbarConfig.mainButtonStyle ?? mainButtonStyle,
onMainButtonTapped: onMainButtonTapped,
config: snackbarConfig,
);
final getBar = GetSnackBar(
key: Key('snackbar_view'),
titleText: title != null
? Text(
title,
key: Key('snackbar_text_title'),
style: snackbarConfig.titleTextStyle ??
titleTextStyle ??
TextStyle(
color:
snackbarConfig.titleColor ?? snackbarConfig.textColor,
fontWeight: FontWeight.w800,
fontSize: 16,
),
textAlign: snackbarConfig.titleTextAlign,
)
: snackbarConfig.titleText ?? null,
messageText: message.isNotEmpty
? Text(
message,
key: Key('snackbar_text_message'),
style: snackbarConfig.messageTextStyle ??
messageTextStyle ??
TextStyle(
color:
snackbarConfig.messageColor ?? snackbarConfig.textColor,
fontWeight: FontWeight.w300,
fontSize: 14,
),
textAlign: snackbarConfig.messageTextAlign,
)
: SizedBox.shrink(),
icon: snackbarConfig.icon,
shouldIconPulse: snackbarConfig.shouldIconPulse,
maxWidth: snackbarConfig.maxWidth,
margin: snackbarConfig.margin ?? EdgeInsets.zero,
padding: snackbarConfig.padding,
borderRadius: snackbarConfig.borderRadius,
borderColor: snackbarConfig.borderColor,
borderWidth: snackbarConfig.borderWidth,
backgroundColor: snackbarConfig.backgroundColor,
leftBarIndicatorColor: snackbarConfig.leftBarIndicatorColor,
boxShadows: snackbarConfig.boxShadows,
backgroundGradient: snackbarConfig.backgroundGradient,
mainButton: mainButtonWidget,
onTap: (snackbar) => onTap?.call(),
duration: duration,
isDismissible: snackbarConfig.isDismissible,
dismissDirection: snackbarConfig.dismissDirection,
showProgressIndicator: snackbarConfig.showProgressIndicator,
progressIndicatorController: snackbarConfig.progressIndicatorController,
progressIndicatorBackgroundColor:
snackbarConfig.progressIndicatorBackgroundColor,
progressIndicatorValueColor: snackbarConfig.progressIndicatorValueColor,
snackPosition: snackbarConfig.snackPosition.toGet,
snackStyle: snackbarConfig.snackStyle.toGet,
forwardAnimationCurve: snackbarConfig.forwardAnimationCurve,
reverseAnimationCurve: snackbarConfig.reverseAnimationCurve,
animationDuration: snackbarConfig.animationDuration,
barBlur: snackbarConfig.barBlur,
overlayBlur: snackbarConfig.overlayBlur,
overlayColor: snackbarConfig.overlayColor,
userInputForm: snackbarConfig.userInputForm,
);
if (snackbarConfig.instantInit) {
return getBar.show();
} else {
Completer completer = Completer();
sc.ambiguate(WidgetsBinding.instance)!.addPostFrameCallback((_) async {
final result = getBar.show();
completer.complete(result);
});
return completer.future;
}
}