74 lines
2.6 KiB
Dart
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),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|