import 'package:cashier_reserve/call/call_view.dart'; import 'package:cashier_reserve/common/base/ui.dart'; import 'package:cashier_reserve/common/base/ui_model.dart'; import 'package:cashier_reserve/common/channel/channel_manager.dart'; import 'package:cashier_reserve/common/channel/model/call_status_change_model.dart'; import 'package:cashier_reserve/common/manager/app_manager.dart'; import 'package:cashier_reserve/common/manager/event_manager.dart'; import 'package:cashier_reserve/common/print/print.dart'; import 'package:cashier_reserve/common/push/push.dart'; import 'package:package_info_plus/package_info_plus.dart'; class HomeViewModel extends BaseUIModel { int _currentIndex = 0; int get currentIndex => _currentIndex; final List _tabTitles = [ "预定", "订单", "打印预定", "历史订单", "来电", "客户", "消息", "更多" ]; final List _tabIcons = [ "reserve", "order", "print", "history", "tel", "customer", "message", "more" ]; List get tabTitles => _tabTitles; List get tabIcons => _tabIcons; PageController? _pageController; PageController? get pageController => _pageController; bool isShowCallView = false; String version = ""; HomeViewModel() { _pageController = PageController(initialPage: 0); Future.delayed(const Duration(milliseconds: 700), () { _checkLogin(); _checkAppVersion(); }); EventManager.addListener(this, (event) { yjPrint( "HomeViewModel CallStatusChangeEvent state: ${event.model.state}"); /// state = IncomingNumberReceived 来电接听 /// state = OutGoing 呼出 /// state = End 通话结束 /// state = Incoming 来电 /// state = Idle 空闲 switch (event.model.state) { case "IncomingNumberReceived": EventManager.postEvent(CallReceivedEvent()); break; case "OutGoing": break; case "Incoming": showCallInfoView(event.model); break; default: hideCallInfoView(); break; } }); _loadVersion(); } @override void dispose() { _pageController?.dispose(); super.dispose(); } _loadVersion() async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); version = packageInfo.version; notifyListeners(); } _checkLogin() { bool flag = AppManager.isLogin(); yjPrint("is login $flag"); } _checkAppVersion() { AppManager.checkAppVersion(); } void setIndex(int index) { if (_currentIndex == index) { return; } _currentIndex = index; notifyListeners(); _pageController?.jumpToPage(index); } showCallInfoView(CallStatusChangeModel model) { if (isShowCallView) { return; } YJPush.presentWidget( context!, CallView( statusModel: model, onAction: (action) { yjPrint("call view action: $action"); if (action == "accept") { ChannelManager.acceptCall(); } else { ChannelManager.rejectCall(); hideCallInfoView(); } })); isShowCallView = true; } hideCallInfoView() { if (!isShowCallView) { return; } Navigator.of(context!).pop(); isShowCallView = false; ChannelManager.getCallLog("getCallLog"); } }