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 _othersCourse = []; ResultState? _state; String _message = ''; List 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 course) { _othersCourse = course; notifyListeners(); } Future getOthersCourse() async { try { _state = ResultState.Loading; notifyListeners(); List 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 getOthersCourses() async { try { List 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'; } } }