cashier_reserve_app/lib/home/home_view_model.dart

148 lines
3.4 KiB
Dart

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<String> _tabTitles = [
"预定",
"订单",
"打印预定",
"历史订单",
"来电",
"客户",
"消息",
"更多"
];
final List<String> _tabIcons = [
"reserve",
"order",
"print",
"history",
"tel",
"customer",
"message",
"more"
];
List<String> get tabTitles => _tabTitles;
List<String> 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<CallStatusChangeEvent>(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");
}
}