replace loading symbol with shimmering cards (#4508)

This commit is contained in:
avashilling 2025-10-23 12:07:39 -04:00 committed by GitHub
parent fc78da4731
commit e09686ede9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -20,6 +20,7 @@ import 'package:fluffychat/pangea/course_settings/pin_clipper.dart';
import 'package:fluffychat/pangea/course_settings/topic_participant_list.dart';
import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:shimmer/shimmer.dart';
class CourseSettings extends StatelessWidget {
// final Room room;
@ -237,8 +238,8 @@ class CourseSettings extends StatelessWidget {
),
if (!locked)
controller.loadingActivities
? const Center(
child: CircularProgressIndicator.adaptive(),
? ActivityCardPlaceholder(
activityCount: topic.activityIds.length,
)
: activityError != null
? ErrorIndicator(
@ -265,6 +266,47 @@ class CourseSettings extends StatelessWidget {
}
}
class ActivityCardPlaceholder extends StatelessWidget {
final int activityCount;
const ActivityCardPlaceholder({
super.key,
required this.activityCount,
});
@override
Widget build(BuildContext context) {
final int shimmerCount = activityCount;
final theme = Theme.of(context);
final isColumnMode = FluffyThemes.isColumnMode(context);
return SizedBox(
height: isColumnMode ? 290.0 : 210.0,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: shimmerCount,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.only(right: 24.0),
child: Shimmer.fromColors(
baseColor: theme.colorScheme.primary.withAlpha(20),
highlightColor: theme.colorScheme.primary.withAlpha(50),
child: Container(
width: isColumnMode ? 160.0 : 120.0,
height: isColumnMode ? 280.0 : 200.0,
decoration: BoxDecoration(
color: theme.colorScheme.surfaceContainer,
borderRadius: BorderRadius.circular(12.0),
),
),
),
);
},
),
);
}
}
class TopicActivitiesList extends StatefulWidget {
final Room room;
final Map<String, ActivityPlanModel> activities;