feat: Introduce PDFService for optimized PDF generation and caching in container and equipment management
This commit is contained in:
@@ -25,6 +25,7 @@ class _EquipmentManagementPageState extends State<EquipmentManagementPage>
|
||||
with SelectionModeMixin<EquipmentManagementPage> {
|
||||
final TextEditingController _searchController = TextEditingController();
|
||||
EquipmentCategory? _selectedCategory;
|
||||
List<EquipmentModel>? _cachedEquipment;
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
@@ -420,7 +421,13 @@ class _EquipmentManagementPageState extends State<EquipmentManagementPage>
|
||||
return StreamBuilder<List<EquipmentModel>>(
|
||||
stream: provider.equipmentStream,
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
// Mettre en cache les données quand elles arrivent
|
||||
if (snapshot.hasData) {
|
||||
_cachedEquipment = snapshot.data;
|
||||
}
|
||||
|
||||
// Afficher le loader seulement si on n'a pas encore de cache
|
||||
if (snapshot.connectionState == ConnectionState.waiting && _cachedEquipment == null) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
}
|
||||
|
||||
@@ -430,7 +437,10 @@ class _EquipmentManagementPageState extends State<EquipmentManagementPage>
|
||||
);
|
||||
}
|
||||
|
||||
if (!snapshot.hasData || snapshot.data!.isEmpty) {
|
||||
// Utiliser le cache si disponible, sinon les nouvelles données
|
||||
final equipment = _cachedEquipment ?? snapshot.data ?? [];
|
||||
|
||||
if (equipment.isEmpty) {
|
||||
return Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
@@ -452,15 +462,15 @@ class _EquipmentManagementPageState extends State<EquipmentManagementPage>
|
||||
);
|
||||
}
|
||||
|
||||
// Tri par nom
|
||||
final equipment = snapshot.data!;
|
||||
equipment.sort((a, b) => a.name.compareTo(b.name));
|
||||
// Créer une copie pour le tri
|
||||
final sortedEquipment = List<EquipmentModel>.from(equipment);
|
||||
sortedEquipment.sort((a, b) => a.name.compareTo(b.name));
|
||||
|
||||
return ListView.builder(
|
||||
padding: const EdgeInsets.all(16),
|
||||
itemCount: equipment.length,
|
||||
itemCount: sortedEquipment.length,
|
||||
itemBuilder: (context, index) {
|
||||
return _buildEquipmentCard(equipment[index]);
|
||||
return _buildEquipmentCard(sortedEquipment[index]);
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user