From ebd6f1c84ca621bbfafc67dd9e908de8d09ec665 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sat, 1 Oct 2022 15:52:45 +0200 Subject: [PATCH] mosaic animation fix --- .../sections/mosaic/section_layout_builder.dart | 13 +++++++------ .../grid/sections/section_layout_builder.dart | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/widgets/common/grid/sections/mosaic/section_layout_builder.dart b/lib/widgets/common/grid/sections/mosaic/section_layout_builder.dart index a5ee06951..4490544ee 100644 --- a/lib/widgets/common/grid/sections/mosaic/section_layout_builder.dart +++ b/lib/widgets/common/grid/sections/mosaic/section_layout_builder.dart @@ -35,9 +35,9 @@ class MosaicSectionLayoutBuilder extends SectionLayoutBuilder { required super.tileWidth, required super.tileHeight, required super.tileBuilder, - required super.tileAnimationDelay, + required Duration tileAnimationDelay, required this.coverRatioResolver, - }) { + }) : super(tileAnimationDelay: Duration(milliseconds: (tileAnimationDelay.inMilliseconds / columnCount).ceil())) { final rowWidth = scrollableWidth - horizontalPadding * 2; rowAvailableWidth = (itemCount) => rowWidth - (itemCount - 1) * spacing; rowHeightMax = tileWidth * heightMaxFactor; @@ -102,19 +102,20 @@ class MosaicSectionLayoutBuilder extends SectionLayoutBuilder { builder: (context, listIndex) { final textDirection = Directionality.of(context); final sectionChildIndex = listIndex - sectionFirstIndex; - final row = sectionChildIndex == 0 ? null : rows[sectionChildIndex - 1]; - final sectionGridIndex = row != null ? (sectionChildIndex + 1) * columnCount + row.firstIndex : sectionChildIndex * columnCount; + final isHeader = sectionChildIndex == 0; + final row = isHeader ? rows.first : rows[sectionChildIndex - 1]; + final sectionGridIndex = isHeader ? sectionFirstIndex * columnCount : (sectionChildIndex + 1) * columnCount + row.firstIndex; return buildSectionWidget( context: context, section: section, sectionGridIndex: sectionGridIndex, sectionChildIndex: sectionChildIndex, - itemIndexRange: () => row == null ? const Tuple2(0, 0) : Tuple2(row.firstIndex, row.lastIndex + 1), + itemIndexRange: () => isHeader ? const Tuple2(0, 0) : Tuple2(row.firstIndex, row.lastIndex + 1), sectionKey: sectionKey, headerExtent: headerExtent, animate: animate, buildGridRow: (children) { - return row == null + return isHeader ? const SizedBox() : MosaicGridRow( rowLayout: row, diff --git a/lib/widgets/common/grid/sections/section_layout_builder.dart b/lib/widgets/common/grid/sections/section_layout_builder.dart index bf24d7fba..2b86b3ff0 100644 --- a/lib/widgets/common/grid/sections/section_layout_builder.dart +++ b/lib/widgets/common/grid/sections/section_layout_builder.dart @@ -85,7 +85,7 @@ abstract class SectionLayoutBuilder { final durations = context.watch(); return AnimationConfiguration.staggeredGrid( position: index, - columnCount: tileLayout == TileLayout.mosaic ? columnCount * 2 : columnCount, + columnCount: tileLayout == TileLayout.mosaic ? 1 : columnCount, duration: durations.staggeredAnimation, delay: tileAnimationDelay, child: SlideAnimation(