minor fixes

This commit is contained in:
Thibault Deckers 2024-09-10 20:27:06 +02:00
parent 1b39bb6ab4
commit 590c353fcd
2 changed files with 54 additions and 41 deletions

View file

@ -221,7 +221,7 @@ class ViewerDetailOverlayContent extends StatelessWidget {
rows.add(_buildRatingTagsFullRow(context)); rows.add(_buildRatingTagsFullRow(context));
} }
if (showDescription) { if (showDescription) {
rows.add(_buildDescriptionFullRow(context)); rows.add(_buildDescriptionFullRow(context, infoMaxWidth));
} }
return rows; return rows;
} }
@ -243,13 +243,18 @@ class ViewerDetailOverlayContent extends StatelessWidget {
), ),
); );
Widget _buildDescriptionFullRow(BuildContext context) => _buildFullRowSwitcher( Widget _buildDescriptionFullRow(BuildContext context, double infoMaxWidth) => _buildFullRowSwitcher(
context: context, context: context,
visible: details.description != null, visible: details.description != null,
builder: (context) => OverlayRowExpander( builder: (context) => SizedBox(
// size it so that a long description with multiple short lines
// expands to the full width and the scroll bar is at the edge
width: infoMaxWidth,
child: OverlayRowExpander(
expandedNotifier: expandedNotifier, expandedNotifier: expandedNotifier,
child: OverlayDescriptionRow(description: details.description!), child: OverlayDescriptionRow(description: details.description!),
), ),
),
); );
Widget _buildShootingFullRow(BuildContext context, double subRowWidth) => _buildFullRowSwitcher( Widget _buildShootingFullRow(BuildContext context, double subRowWidth) => _buildFullRowSwitcher(
@ -286,8 +291,14 @@ class ViewerDetailOverlayContent extends StatelessWidget {
required double subRowWidth, required double subRowWidth,
required bool visible, required bool visible,
required WidgetBuilder builder, required WidgetBuilder builder,
}) => }) {
AnimatedSwitcher( final child = visible
? SizedBox(
width: subRowWidth,
child: builder(context),
)
: const SizedBox();
return AnimatedSwitcher(
duration: context.select<DurationsData, Duration>((v) => v.viewerOverlayChangeAnimation), duration: context.select<DurationsData, Duration>((v) => v.viewerOverlayChangeAnimation),
switchInCurve: Curves.easeInOutCubic, switchInCurve: Curves.easeInOutCubic,
switchOutCurve: Curves.easeInOutCubic, switchOutCurve: Curves.easeInOutCubic,
@ -295,36 +306,34 @@ class ViewerDetailOverlayContent extends StatelessWidget {
opacity: animation, opacity: animation,
child: child, child: child,
), ),
child: visible child: child,
? SizedBox(
width: subRowWidth,
child: builder(context),
)
: const SizedBox(),
); );
}
Widget _buildFullRowSwitcher({ Widget _buildFullRowSwitcher({
required BuildContext context, required BuildContext context,
required bool visible, required bool visible,
required WidgetBuilder builder, required WidgetBuilder builder,
}) => }) {
AnimatedSwitcher( final child = visible
? Padding(
padding: const EdgeInsets.only(top: _interRowPadding),
child: builder(context),
)
: const SizedBox();
return AnimatedSwitcher(
duration: context.select<DurationsData, Duration>((v) => v.viewerOverlayChangeAnimation), duration: context.select<DurationsData, Duration>((v) => v.viewerOverlayChangeAnimation),
switchInCurve: Curves.easeInOutCubic, switchInCurve: Curves.easeInOutCubic,
switchOutCurve: Curves.easeInOutCubic, switchOutCurve: Curves.easeInOutCubic,
transitionBuilder: (child, animation) => FadeTransition( transitionBuilder: (child, animation) => FadeTransition(
opacity: animation, opacity: animation,
child: SizeTransition( child: SizeTransition(
axisAlignment: 1,
sizeFactor: animation, sizeFactor: animation,
axisAlignment: 1,
child: child, child: child,
), ),
), ),
child: visible child: child,
? Padding(
padding: const EdgeInsets.only(top: _interRowPadding),
child: builder(context),
)
: const SizedBox(),
); );
} }
}

View file

@ -414,7 +414,11 @@ class _EntryPageViewState extends State<EntryPageView> with TickerProviderStateM
onScaleUpdate: onScaleUpdate, onScaleUpdate: onScaleUpdate,
onScaleEnd: onScaleEnd, onScaleEnd: onScaleEnd,
onFling: _onFling, onFling: _onFling,
onTap: (c, s, a, p) => _onTap(alignment: a), onTap: (c, s, a, p) {
if (c.mounted) {
_onTap(alignment: a);
}
},
onDoubleTap: onDoubleTap, onDoubleTap: onDoubleTap,
child: child, child: child,
); );