import 'package:stacked/stacked.dart'; import 'package:stacked_services/stacked_services.dart'; import 'package:yimaru_app/app/app.router.dart'; import 'package:yimaru_app/models/learn_subscription.dart'; import '../../../app/app.locator.dart'; import '../../../services/api_service.dart'; import '../../../services/status_checker_service.dart'; import '../../common/enmus.dart'; class LearnSubscriptionViewModel extends FormViewModel { // Dependency injection final _apiService = locator(); final _statusChecker = locator(); final _navigationService = locator(); // In-app navigation int _currentPage = 0; int get currentPage => _currentPage; // Phone number bool _focusPhoneNumber = false; bool get focusPhoneNumber => _focusPhoneNumber; // Learn subscriptions int _selectedIndex = 0; int get selectedIndex => _selectedIndex; List _subscriptions = []; List get subscriptions => _subscriptions; // Phone number void setPhoneNumberFocus() { _focusPhoneNumber = true; rebuildUi(); } // In-app navigation void goBack() { if (_currentPage == 0) { _navigationService.back(); } else { _currentPage--; rebuildUi(); } } void next() async { _currentPage++; rebuildUi(); } // Navigation void pop() => _navigationService.back(); Future navigateToArifPay(String phone) async { pop(); await _navigationService.navigateToArifPayView(phone: phone); } //Learn subscriptions void setSelectedPricing(int index) { _selectedIndex = index; rebuildUi(); } // Remote api call // Learn subscriptions Future getLearnSubscriptions() async => await runBusyFuture(_getLearnSubscriptions(), busyObject: StateObjects.learnSubscriptions); Future _getLearnSubscriptions() async { if (await _statusChecker.checkConnection()) { _subscriptions = await _apiService.getLearnSubscriptions(); } } }