mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-24 10:28:50 +01:00
Use toast instead of snackbar in dialog to prevent it showing underneath
This commit is contained in:
parent
6d25f47412
commit
15687879ba
8 changed files with 66 additions and 58 deletions
|
@ -992,10 +992,6 @@
|
|||
"@fixTooltip": {
|
||||
"description": "Fix an issue"
|
||||
},
|
||||
"fixButtonLabel": "FIX",
|
||||
"@fixButtonLabel": {
|
||||
"description": "Fix an issue"
|
||||
},
|
||||
"fixAllTooltip": "Fix all",
|
||||
"@fixAllTooltip": {
|
||||
"description": "Fix all listed issues"
|
||||
|
|
17
app/lib/toast.dart
Normal file
17
app/lib/toast.dart
Normal file
|
@ -0,0 +1,17 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
|
||||
class AppToast {
|
||||
static Future<bool?> showToast(
|
||||
BuildContext context, {
|
||||
required String msg,
|
||||
required Duration duration,
|
||||
}) {
|
||||
return Fluttertoast.showToast(
|
||||
msg: msg,
|
||||
timeInSecForIosWeb: duration.inSeconds,
|
||||
backgroundColor: Theme.of(context).snackBarTheme.backgroundColor,
|
||||
textColor: Theme.of(context).snackBarTheme.contentTextStyle!.color,
|
||||
);
|
||||
}
|
||||
}
|
|
@ -14,7 +14,7 @@ import 'package:nc_photos/entity/collection_item.dart';
|
|||
import 'package:nc_photos/exception_event.dart';
|
||||
import 'package:nc_photos/exception_util.dart' as exception_util;
|
||||
import 'package:nc_photos/k.dart' as k;
|
||||
import 'package:nc_photos/snack_bar_manager.dart';
|
||||
import 'package:nc_photos/toast.dart';
|
||||
import 'package:nc_photos/widget/processing_dialog.dart';
|
||||
import 'package:np_codegen/np_codegen.dart';
|
||||
import 'package:to_string/to_string.dart';
|
||||
|
@ -73,10 +73,11 @@ class _WrappedExportCollectionDialogState
|
|||
listenWhen: (previous, current) => previous.error != current.error,
|
||||
listener: (_, state) {
|
||||
if (state.error != null) {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(exception_util.toUserString(state.error!.error)),
|
||||
AppToast.showToast(
|
||||
context,
|
||||
msg: exception_util.toUserString(state.error!.error),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
|
|
|
@ -22,7 +22,7 @@ import 'package:nc_photos/k.dart' as k;
|
|||
import 'package:nc_photos/mobile/share.dart';
|
||||
import 'package:nc_photos/platform/k.dart' as platform_k;
|
||||
import 'package:nc_photos/remote_storage_util.dart' as remote_storage_util;
|
||||
import 'package:nc_photos/snack_bar_manager.dart';
|
||||
import 'package:nc_photos/toast.dart';
|
||||
import 'package:nc_photos/use_case/copy.dart';
|
||||
import 'package:nc_photos/use_case/create_dir.dart';
|
||||
import 'package:nc_photos/use_case/create_share.dart';
|
||||
|
@ -83,16 +83,17 @@ class _WrappedFileSharer extends StatelessWidget {
|
|||
listener: (context, state) {
|
||||
if (state.error != null) {
|
||||
if (state.error!.error is PermissionException) {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(L10n.global().errorNoStoragePermission),
|
||||
AppToast.showToast(
|
||||
context,
|
||||
msg: L10n.global().errorNoStoragePermission,
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
);
|
||||
} else {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content:
|
||||
Text(exception_util.toUserString(state.error!.error)),
|
||||
AppToast.showToast(
|
||||
context,
|
||||
msg: exception_util.toUserString(state.error!.error),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -102,10 +103,11 @@ class _WrappedFileSharer extends StatelessWidget {
|
|||
previous.message != current.message,
|
||||
listener: (context, state) {
|
||||
if (state.message != null) {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(state.message!),
|
||||
AppToast.showToast(
|
||||
context,
|
||||
msg: state.message!,
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
|
|
|
@ -23,7 +23,7 @@ import 'package:nc_photos/exception_util.dart' as exception_util;
|
|||
import 'package:nc_photos/k.dart' as k;
|
||||
import 'package:nc_photos/object_extension.dart';
|
||||
import 'package:nc_photos/pref.dart';
|
||||
import 'package:nc_photos/snack_bar_manager.dart';
|
||||
import 'package:nc_photos/toast.dart';
|
||||
import 'package:nc_photos/widget/album_dir_picker.dart';
|
||||
import 'package:nc_photos/widget/processing_dialog.dart';
|
||||
import 'package:nc_photos/widget/tag_picker_dialog.dart';
|
||||
|
@ -93,10 +93,11 @@ class _WrappedNewCollectionDialogState
|
|||
listenWhen: (previous, current) => previous.error != current.error,
|
||||
listener: (context, state) {
|
||||
if (state.error != null) {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(exception_util.toUserString(state.error!.error)),
|
||||
AppToast.showToast(
|
||||
context,
|
||||
msg: exception_util.toUserString(state.error!.error),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
|
@ -188,8 +189,9 @@ class _WrappedNewCollectionDialogState
|
|||
..pop(collection);
|
||||
} catch (e, stackTrace) {
|
||||
_log.shout("[_onResult] Failed", e, stackTrace);
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(exception_util.toUserString(e)),
|
||||
unawaited(AppToast.showToast(
|
||||
context,
|
||||
msg: exception_util.toUserString(e),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
Navigator.of(context)
|
||||
|
|
|
@ -13,16 +13,14 @@ import 'package:nc_photos/controller/account_controller.dart';
|
|||
import 'package:nc_photos/controller/collections_controller.dart';
|
||||
import 'package:nc_photos/di_container.dart';
|
||||
import 'package:nc_photos/entity/collection.dart';
|
||||
import 'package:nc_photos/entity/collection/content_provider/album.dart';
|
||||
import 'package:nc_photos/entity/collection/util.dart';
|
||||
import 'package:nc_photos/entity/sharee.dart';
|
||||
import 'package:nc_photos/exception.dart';
|
||||
import 'package:nc_photos/exception_event.dart';
|
||||
import 'package:nc_photos/exception_util.dart' as exception_util;
|
||||
import 'package:nc_photos/k.dart' as k;
|
||||
import 'package:nc_photos/snack_bar_manager.dart';
|
||||
import 'package:nc_photos/suggester.dart';
|
||||
import 'package:nc_photos/widget/album_share_outlier_browser.dart';
|
||||
import 'package:nc_photos/toast.dart';
|
||||
import 'package:np_codegen/np_codegen.dart';
|
||||
import 'package:np_common/ci_string.dart';
|
||||
import 'package:to_string/to_string.dart';
|
||||
|
@ -86,34 +84,28 @@ class _WrappedShareCollectionDialogState
|
|||
if (state.error != null) {
|
||||
if (state.error!.error is CollectionPartialShareException) {
|
||||
final e = state.error!.error as CollectionPartialShareException;
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(L10n.global()
|
||||
.shareAlbumSuccessWithErrorNotification(e.shareeName)),
|
||||
action: SnackBarAction(
|
||||
label: L10n.global().fixButtonLabel,
|
||||
onPressed: _onFixPressed,
|
||||
),
|
||||
AppToast.showToast(
|
||||
context,
|
||||
msg: L10n.global()
|
||||
.shareAlbumSuccessWithErrorNotification(e.shareeName),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
);
|
||||
} else if (state.error!.error
|
||||
is CollectionPartialUnshareException) {
|
||||
final e =
|
||||
state.error!.error as CollectionPartialUnshareException;
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(L10n.global()
|
||||
.unshareAlbumSuccessWithErrorNotification(e.shareeName)),
|
||||
action: SnackBarAction(
|
||||
label: L10n.global().fixButtonLabel,
|
||||
onPressed: _onFixPressed,
|
||||
),
|
||||
AppToast.showToast(
|
||||
context,
|
||||
msg: L10n.global()
|
||||
.unshareAlbumSuccessWithErrorNotification(e.shareeName),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
);
|
||||
} else {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content:
|
||||
Text(exception_util.toUserString(state.error!.error)),
|
||||
AppToast.showToast(
|
||||
context,
|
||||
msg: exception_util.toUserString(state.error!.error),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -146,16 +138,6 @@ class _WrappedShareCollectionDialogState
|
|||
);
|
||||
}
|
||||
|
||||
void _onFixPressed() {
|
||||
final bloc = context.read<_Bloc>();
|
||||
final collection = bloc.state.collection;
|
||||
final album = (collection.contentProvider as CollectionAlbumProvider).album;
|
||||
Navigator.of(context).pushNamed(
|
||||
AlbumShareOutlierBrowser.routeName,
|
||||
arguments: AlbumShareOutlierBrowserArguments(bloc.account, album),
|
||||
);
|
||||
}
|
||||
|
||||
late final _bloc = context.read<_Bloc>();
|
||||
}
|
||||
|
||||
|
|
|
@ -616,6 +616,13 @@ packages:
|
|||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
fluttertoast:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: fluttertoast
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "8.2.1"
|
||||
frontend_server_client:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -59,6 +59,7 @@ dependencies:
|
|||
git:
|
||||
url: https://gitlab.com/nc-photos/exifdart.git
|
||||
ref: 1.3.0
|
||||
fluttertoast: ^8.2.1
|
||||
flutter_background_service:
|
||||
git:
|
||||
url: https://gitlab.com/nc-photos/flutter_background_service.git
|
||||
|
|
Loading…
Reference in a new issue