import 'package:flutter/material.dart'; import '../models/article.dart'; import '../services/article_service.dart'; class ArticleProvider extends ChangeNotifier { List
_articles = []; bool _isLoading = false; String? _error; String _filterType = 'TOUS'; String _search = ''; List
get articles => _filtered(); bool get isLoading => _isLoading; String? get error => _error; String get filterType => _filterType; List
_filtered() { return _articles.where((a) { final matchType = _filterType == 'TOUS' || a.type == _filterType; final matchSearch = _search.isEmpty || a.reference.toLowerCase().contains(_search.toLowerCase()) || a.designation.toLowerCase().contains(_search.toLowerCase()); return matchType && matchSearch; }).toList(); } void setFilter(String type) { _filterType = type; notifyListeners(); } void setSearch(String q) { _search = q; notifyListeners(); } Future load() async { _isLoading = true; _error = null; notifyListeners(); try { _articles = await ArticleService.fetchAll(); } catch (_) { _error = 'Impossible de charger les articles.'; } finally { _isLoading = false; notifyListeners(); } } Future create(Article article) async { try { final created = await ArticleService.create(article); _articles.add(created); notifyListeners(); return true; } catch (_) { return false; } } Future update(int id, Article article) async { try { final updated = await ArticleService.update(id, article); final idx = _articles.indexWhere((a) => a.id == id); if (idx != -1) _articles[idx] = updated; notifyListeners(); return true; } catch (_) { return false; } } Future delete(int id) async { try { await ArticleService.delete(id); _articles.removeWhere((a) => a.id == id); notifyListeners(); return true; } catch (_) { return false; } } }