Files
unionflow-mobile-apps/lib/shared/widgets/core_shimmer.dart
dahoud d094d6db9c Initial commit: unionflow-mobile-apps
Application Flutter complète (sans build artifacts).

Signed-off-by: lions dev Team
2026-03-15 16:30:08 +00:00

74 lines
2.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:shimmer/shimmer.dart';
import '../design_system/tokens/app_colors.dart';
import 'core_card.dart';
/// UnionFlow Mobile - Composant DRY : CoreShimmer
/// Utilise `shimmer` package pour générer des loaders élégants sans textes.
class CoreShimmer extends StatelessWidget {
final int itemCount;
const CoreShimmer({
Key? key,
this.itemCount = 5,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
final baseColor = isDark ? Colors.grey[800]! : Colors.grey[300]!;
final highlightColor = isDark ? Colors.grey[700]! : Colors.grey[100]!;
return ListView.builder(
itemCount: itemCount,
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (_, __) => Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: Shimmer.fromColors(
baseColor: baseColor,
highlightColor: highlightColor,
child: CoreCard(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
CircleAvatar(radius: 16, backgroundColor: Colors.white),
SizedBox(width: 8),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(width: 100, height: 10, color: Colors.white),
SizedBox(height: 4),
Container(width: 40, height: 8, color: Colors.white),
],
),
),
],
),
SizedBox(height: 12),
Container(width: double.infinity, height: 10, color: Colors.white),
SizedBox(height: 4),
Container(width: 250, height: 10, color: Colors.white),
SizedBox(height: 4),
Container(width: 150, height: 10, color: Colors.white),
SizedBox(height: 12),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(width: 40, height: 12, color: Colors.white),
Container(width: 40, height: 12, color: Colors.white),
Container(width: 40, height: 12, color: Colors.white),
],
),
],
),
),
),
),
);
}
}