show method
ComBannerController
show({
- required String message,
- required ComToastConfig config,
- required ComToastBannerContent? content,
- required ComBannerBuilder? builder,
- required ComBannerOptions options,
- required Object duplicateKey,
- bool skipDuplicateFilter = false,
Implementation
ComBannerController show({
required String message,
required ComToastConfig config,
required ComToastBannerContent? content,
required ComBannerBuilder? builder,
required ComBannerOptions options,
required Object duplicateKey,
bool skipDuplicateFilter = false,
}) {
config.validate();
options.validate();
_ensureLifecycleObserver();
final id = ++_sequence;
final completer = Completer<ComBannerClosedReason>();
final controller = ComBannerController.managed(
closed: completer.future,
onClose: () => unawaited(close(id, ComBannerClosedReason.programmatic)),
);
final banner = _QueuedBanner(
id: id,
message: message,
config: config.copyWith(
presentation: ComToastPresentation.banner,
position: ComToastPosition.top,
),
content: content,
builder: builder,
options: options,
controller: controller,
completer: completer,
);
final isEmpty = builder == null &&
message.trim().isEmpty &&
content?.title == null &&
content?.subtitle == null &&
content?.trailing == null;
if (isEmpty) {
_complete(banner, ComBannerClosedReason.failedToShow);
return controller;
}
final usesDuplicateFilter =
options.queuePolicy == ComBannerQueuePolicy.enqueue;
if (!skipDuplicateFilter &&
usesDuplicateFilter &&
_isDuplicate(duplicateKey)) {
_complete(banner, ComBannerClosedReason.duplicate);
return controller;
}
_enqueue(banner);
return controller;
}