mobile_adaptive_learning/lib/features/home/provider/completed_topics_provider.dart
Naresh Pratista e3b522bd33 refactor(learning): Enhance data loading and navigation flow
- Implement comprehensive loading state management
- Add error handling for topics and sections data fetching
- Improve user experience with loading indicators
- Prevent premature navigation before data is fully loaded
- Add safety checks for topic and section interaction
2024-11-13 09:03:40 +07:00

46 lines
1.2 KiB
Dart

// lib/features/home/providers/completed_topics_provider.dart
import 'package:english_learning/core/services/repositories/completed_topics_repository.dart';
import 'package:english_learning/features/home/models/completed_topics_model.dart';
import 'package:flutter/foundation.dart';
class CompletedTopicsProvider with ChangeNotifier {
final CompletedTopicsRepository _repository;
List<CompletedTopic> _completedTopics = [];
bool _isLoading = false;
String? _error;
CompletedTopicsProvider(this._repository);
List<CompletedTopic> get completedTopics => _completedTopics;
bool get isLoading => _isLoading;
String? get error => _error;
void resetData() {
_completedTopics = [];
_isLoading = false;
_error = null;
notifyListeners();
}
Future<void> fetchCompletedTopics(String token) async {
resetData();
_isLoading = true;
notifyListeners();
try {
final result = await _repository.getCompletedTopics(token);
_completedTopics = result;
_error = null;
} catch (e) {
// Tangani error
_completedTopics = [];
_error = e.toString();
} finally {
// Selalu set loading ke false
_isLoading = false;
notifyListeners();
}
}
}