Initial commit: Penyerahan final Source code Tugas Akhir
This commit is contained in:
87
lib/providers/my_course_provider.dart
Normal file
87
lib/providers/my_course_provider.dart
Normal file
@ -0,0 +1,87 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/models/my_course_model.dart';
|
||||
import 'package:initial_folder/services/course_service.dart';
|
||||
|
||||
enum ResultState { Loading, NoData, HasData, Error }
|
||||
|
||||
enum SearchResultState { Loading, NoData, HasData, Error }
|
||||
|
||||
class MyCourseProvider with ChangeNotifier {
|
||||
final CourseService courseService;
|
||||
MyCourseProvider({required this.courseService}) {
|
||||
getMyCourse();
|
||||
}
|
||||
MyCourseModel? _myCourseModel;
|
||||
MyCourseModel? _searchCourseModel;
|
||||
ResultState? _state;
|
||||
SearchResultState? _searchResultState;
|
||||
String _message = '';
|
||||
|
||||
MyCourseModel? get result => _myCourseModel;
|
||||
MyCourseModel? get searchResult => _searchCourseModel;
|
||||
ResultState? get state => _state;
|
||||
SearchResultState? get searchResultState => _searchResultState;
|
||||
|
||||
String get message => _message;
|
||||
|
||||
set myCourse(MyCourseModel myCourse) {
|
||||
_myCourseModel = myCourse;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<dynamic> getMyCourse() async {
|
||||
try {
|
||||
_state = ResultState.Loading;
|
||||
notifyListeners();
|
||||
MyCourseModel myCourse = await courseService.getMyCourse();
|
||||
|
||||
if (myCourse.data[0].isEmpty) {
|
||||
_state = ResultState.NoData;
|
||||
notifyListeners();
|
||||
return _message = 'Empty Data';
|
||||
} else {
|
||||
_state = ResultState.HasData;
|
||||
notifyListeners();
|
||||
return _myCourseModel = myCourse;
|
||||
}
|
||||
} catch (e) {
|
||||
_state = ResultState.Error;
|
||||
notifyListeners();
|
||||
print('resultstate mycourse eror');
|
||||
return _message = 'Error --> $e';
|
||||
}
|
||||
}
|
||||
|
||||
Future<dynamic> getSearchMyCourse(String courseName) async {
|
||||
try {
|
||||
_searchResultState = SearchResultState.Loading;
|
||||
|
||||
notifyListeners();
|
||||
MyCourseModel myCourse =
|
||||
await courseService.getSearchMyCourse(courseName);
|
||||
if (myCourse.data[0].isEmpty) {
|
||||
_searchResultState = SearchResultState.NoData;
|
||||
notifyListeners();
|
||||
return _message = 'Empty Data';
|
||||
} else {
|
||||
_searchResultState = SearchResultState.HasData;
|
||||
notifyListeners();
|
||||
|
||||
return _searchCourseModel = myCourse;
|
||||
}
|
||||
} catch (e) {
|
||||
_searchResultState = SearchResultState.Error;
|
||||
notifyListeners();
|
||||
return _message = 'Error --> $e';
|
||||
}
|
||||
}
|
||||
|
||||
clearSearch() {
|
||||
_searchResultState = null;
|
||||
Future.delayed(Duration(seconds: 2), () {
|
||||
if (_searchCourseModel != null && _searchCourseModel!.data.isNotEmpty) {
|
||||
_searchCourseModel!.data[0].clear();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user