Fix snackbar covering bottom appbar in viewer

This commit is contained in:
Ming Ming 2023-03-19 17:02:42 +08:00
parent 8a429dc4cd
commit f5aca6f016
2 changed files with 72 additions and 95 deletions

View file

@ -192,6 +192,7 @@ ThemeData _applyColorScheme(ColorScheme colorScheme, Color seedColor) {
color: colorScheme.onInverseSurface,
),
actionTextColor: colorScheme.inversePrimary,
behavior: SnackBarBehavior.floating,
),
extensions: [
M3(

View file

@ -26,7 +26,6 @@ import 'package:nc_photos/theme.dart';
import 'package:nc_photos/use_case/inflate_file_descriptor.dart';
import 'package:nc_photos/use_case/remove_from_album.dart';
import 'package:nc_photos/use_case/update_property.dart';
import 'package:nc_photos/widget/animated_visibility.dart';
import 'package:nc_photos/widget/disposable.dart';
import 'package:nc_photos/widget/handler/archive_selection_handler.dart';
import 'package:nc_photos/widget/handler/remove_selection_handler.dart';
@ -101,7 +100,7 @@ class Viewer extends StatefulWidget {
class _ViewerState extends State<Viewer>
with DisposableManagerMixin<Viewer>, ViewerControllersMixin<Viewer> {
@override
initState() {
void initState() {
super.initState();
_streamFilesView = widget.streamFiles;
}
@ -112,6 +111,10 @@ class _ViewerState extends State<Viewer>
return Theme(
data: buildDarkTheme(),
child: Scaffold(
extendBodyBehindAppBar: true,
extendBody: true,
appBar: _isShowAppBar ? _buildAppBar(context) : null,
bottomNavigationBar: _isShowAppBar ? _buildBottomAppBar(context) : null,
body: Builder(
builder: (context) => _buildContent(context, originalBrightness),
),
@ -147,24 +150,7 @@ class _ViewerState extends State<Viewer>
setState(() {});
},
),
_buildBottomAppBar(context),
_buildAppBar(context),
],
),
);
}
Widget _buildAppBar(BuildContext context) {
final index =
_isViewerLoaded ? _viewerController.currentPage : widget.startIndex;
final file = _streamFilesView[index];
return Wrap(
children: [
AnimatedVisibility(
opacity: _isShowAppBar ? 1.0 : 0.0,
duration: k.animationDurationNormal,
child: Stack(
children: [
if (_isShowAppBar)
Container(
// + status bar height
height: kToolbarHeight + MediaQuery.of(context).padding.top,
@ -179,14 +165,21 @@ class _ViewerState extends State<Viewer>
),
),
),
AppBar(
],
),
);
}
AppBar _buildAppBar(BuildContext context) {
final index =
_isViewerLoaded ? _viewerController.currentPage : widget.startIndex;
final file = _streamFilesView[index];
return AppBar(
backgroundColor: Colors.transparent,
elevation: 0,
actions: [
if (!_isDetailPaneActive && _canOpenDetailPane()) ...[
(_pageStates[index]?.favoriteOverride ??
file.fdIsFavorite) ==
true
(_pageStates[index]?.favoriteOverride ?? file.fdIsFavorite) == true
? IconButton(
icon: const Icon(Icons.star),
tooltip: L10n.global().unfavoriteTooltip,
@ -204,11 +197,6 @@ class _ViewerState extends State<Viewer>
),
],
],
),
],
),
),
],
);
}
@ -216,16 +204,7 @@ class _ViewerState extends State<Viewer>
final index =
_isViewerLoaded ? _viewerController.currentPage : widget.startIndex;
final file = _streamFilesView[index];
return Align(
alignment: Alignment.bottomCenter,
child: Material(
type: MaterialType.transparency,
child: AnimatedVisibility(
opacity: (_isShowAppBar && !_isDetailPaneActive) ? 1.0 : 0.0,
duration: !_isDetailPaneActive
? k.animationDurationNormal
: const Duration(milliseconds: 1),
child: ViewerBottomAppBar(
return ViewerBottomAppBar(
children: [
IconButton(
icon: const Icon(Icons.share_outlined),
@ -256,9 +235,6 @@ class _ViewerState extends State<Viewer>
onPressed: () => _onDeletePressed(context),
),
],
),
),
),
);
}