import 'package:stacked/stacked.dart'; import 'package:stacked_services/stacked_services.dart'; import '../../../app/app.locator.dart'; import '../../../app/app.router.dart'; import '../../../models/course.dart'; import '../../../models/course_detail.dart'; import '../../../services/course_service.dart'; import '../../../services/status_checker_service.dart'; import '../../common/enmus.dart'; class CourseViewModel extends BaseViewModel { // Dependency injection final _courseService = locator(); final _statusChecker = locator(); final _navigationService = locator(); // Subcourse with progress List _courseDetail = []; List get courseDetail => _courseDetail; // Navigation void pop() => _navigationService.back(); Future navigateToCoursePayment(Course course) async => _navigationService.navigateToCoursePaymentView(course: course); Future navigateToCoursePractice(int id) => _navigationService.navigateToCoursePracticeView(id: id); // Remote api call // Sub course Future getCourseDetails(int id) async => await runBusyFuture(_getCourseDetails(id), busyObject: StateObjects.courses); Future _getCourseDetails(int id) async { if (await _statusChecker.checkConnection()) { _courseDetail = await _courseService.getCoursesDetail(id); _courseDetail.sort((a, b) => (a.course?.displayOrder ?? 0).compareTo(b.course?.displayOrder ?? 0)); rebuildUi(); } } }