Files
Vocasia-LMS-Mobile-apps--TA…/lib/providers/others_course_provider.dart

76 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:initial_folder/models/course_model.dart';
import 'package:initial_folder/services/course_service.dart';
enum ResultState { Loading, NoData, HasData, Error }
class OthersCourseProvider with ChangeNotifier {
final CourseService otherCourseService;
OthersCourseProvider({required this.otherCourseService}) {
getOthersCourse();
}
List<CourseModel> _othersCourse = [];
ResultState? _state;
String _message = '';
List<CourseModel> get result => _othersCourse;
ResultState? get state => _state;
String get message => _message;
int _page = 1;
int get page => _page;
bool _loading = true;
bool get loading => _loading;
set course(List<CourseModel> course) {
_othersCourse = course;
notifyListeners();
}
Future<dynamic> getOthersCourse() async {
try {
_state = ResultState.Loading;
notifyListeners();
List<CourseModel> course =
await otherCourseService.getOthersCourse(_page);
if (course.isEmpty) {
_state = ResultState.NoData;
notifyListeners();
return _message = 'Empty Data';
} else {
course.shuffle();
_state = ResultState.HasData;
notifyListeners();
return _othersCourse = course;
}
} catch (e) {
_state = ResultState.Error;
notifyListeners();
return _message = 'Error --> $e';
}
}
Future<dynamic> getOthersCourses() async {
try {
List<CourseModel> res =
await otherCourseService.getOthersCourse(_page + 1);
if (res.isNotEmpty) {
res.shuffle();
_page += 1;
notifyListeners();
return _othersCourse.addAll(res);
} else {
_loading = false;
notifyListeners();
}
} catch (e) {
_state = ResultState.Error;
notifyListeners();
return _message = 'Error --> $e';
}
}
}