Merge pull request #4934 from pangeachat/4928-clicking-participant-tile-only-show-part-of-summary

fix: fix carousel scroll issue
This commit is contained in:
ggurdin 2025-12-22 14:03:48 -05:00 committed by GitHub
commit 78e670eef1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -108,6 +108,8 @@ class ButtonControlledCarouselView extends StatelessWidget {
return const SizedBox();
}
final cardWidth = isColumnMode ? 400.0 : 350.0;
return Column(
children: [
SizedBox(
@ -125,7 +127,7 @@ class ButtonControlledCarouselView extends StatelessWidget {
(role) => role.userId == p.participantId,
);
return Container(
width: isColumnMode ? 400.0 : 350.0,
width: cardWidth,
margin: const EdgeInsets.only(right: 5.0),
padding: const EdgeInsets.all(12.0),
decoration: ShapeDecoration(
@ -255,8 +257,32 @@ class ButtonControlledCarouselView extends StatelessWidget {
selected: highlightedRole?.id == userRole.id,
onTap: () {
controller.activityController.highlightRole(userRole);
controller.activityController.carouselController
.jumpTo(i * 250.0);
final scrollController =
controller.activityController.carouselController;
if (!scrollController.hasClients) return;
const spacing = 5.0;
final itemExtent = cardWidth + spacing;
final viewportWidth =
scrollController.position.viewportDimension;
final itemCenter = (i * itemExtent) + (cardWidth / 2);
final targetOffset = itemCenter - (viewportWidth / 2);
final clampedOffset = targetOffset.clamp(
scrollController.position.minScrollExtent,
scrollController.position.maxScrollExtent,
);
scrollController.animateTo(
clampedOffset,
duration: const Duration(milliseconds: 300),
curve: Curves.easeOutCubic,
);
},
);
}).toList(),