优化
This commit is contained in:
56
client/flutter/lib/providers/stats_provider.dart
Normal file
56
client/flutter/lib/providers/stats_provider.dart
Normal file
@@ -0,0 +1,56 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user