Files
chat/client/flutter/lib/providers/stats_provider.dart
2026-04-25 16:36:34 +08:00

57 lines
1.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:sales_chat/models/stats.dart';
import 'package:sales_chat/services/api_service.dart';
class StatsProvider with ChangeNotifier {
final ApiService _apiService;
MyStats? _myStats;
List<RankingEntry> _ranking = [];
bool _isLoading = false;
String? _error;
StatsProvider(this._apiService);
MyStats? get myStats => _myStats;
List<RankingEntry> get ranking => _ranking;
bool get isLoading => _isLoading;
String? get error => _error;
/// Load the current user's stats
Future<void> loadMyStats() async {
_isLoading = true;
_error = null;
notifyListeners();
try {
_myStats = await _apiService.getMyStats();
_isLoading = false;
notifyListeners();
} catch (e) {
_error = 'Failed to load stats';
_isLoading = false;
notifyListeners();
}
}
/// Load the ranking list
Future<void> loadRanking({String period = 'monthly'}) async {
try {
_ranking = await _apiService.getRanking(period: period);
notifyListeners();
} catch (e) {
// Handle silently
}
}
void clearError() {
_error = null;
notifyListeners();
}
Future<void> refresh() async {
await loadMyStats();
await loadRanking();
}
}