mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-03-27 17:34:44 +01:00
Handle replaceable snack bars in manager
This commit is contained in:
parent
807b009dd7
commit
7ff21fa66e
2 changed files with 28 additions and 7 deletions
|
@ -21,20 +21,38 @@ class SnackBarManager {
|
|||
|
||||
/// Show a snack bar if possible
|
||||
///
|
||||
/// If the snack bar can't be shown at this time, return null
|
||||
/// If the snack bar can't be shown at this time, return null.
|
||||
///
|
||||
/// If [canBeReplaced] is true, this snackbar will be dismissed by the next
|
||||
/// snack bar
|
||||
ScaffoldFeatureController<SnackBar, SnackBarClosedReason>? showSnackBar(
|
||||
SnackBar snackBar) {
|
||||
SnackBar snackBar, {
|
||||
bool canBeReplaced = false,
|
||||
}) {
|
||||
if (_canPrevBeReplaced) {
|
||||
_prevController?.close();
|
||||
}
|
||||
_canPrevBeReplaced = canBeReplaced;
|
||||
for (final h in _handlers.reversed) {
|
||||
final result = h.showSnackBar(snackBar);
|
||||
if (result != null) {
|
||||
_prevController = result;
|
||||
result.closed.whenComplete(() {
|
||||
if (identical(_prevController, result)) {
|
||||
_prevController = null;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
}
|
||||
_log.warning("[showSnackBar] No handler available");
|
||||
_prevController = null;
|
||||
return null;
|
||||
}
|
||||
|
||||
final _handlers = <SnackBarHandler>[];
|
||||
ScaffoldFeatureController<SnackBar, SnackBarClosedReason>? _prevController;
|
||||
var _canPrevBeReplaced = false;
|
||||
|
||||
static final _inst = SnackBarManager._();
|
||||
|
||||
|
|
|
@ -403,11 +403,14 @@ class _DynamicAlbumBrowserState extends State<DynamicAlbumBrowser>
|
|||
}
|
||||
|
||||
void _onSelectionDeletePressed() async {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(L10n.global()
|
||||
.deleteSelectedProcessingNotification(selectedListItems.length)),
|
||||
duration: k.snackBarDurationShort,
|
||||
));
|
||||
SnackBarManager().showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(L10n.global()
|
||||
.deleteSelectedProcessingNotification(selectedListItems.length)),
|
||||
duration: k.snackBarDurationShort,
|
||||
),
|
||||
canBeReplaced: true,
|
||||
);
|
||||
|
||||
final selected = selectedListItems.whereType<_FileListItem>().toList();
|
||||
setState(() {
|
||||
|
|
Loading…
Add table
Reference in a new issue