接听挂断电话

This commit is contained in:
GYJ
2024-11-28 13:49:26 +08:00
parent 1da1683adc
commit b6cd0d0f2b
13 changed files with 305 additions and 13 deletions

View File

@@ -1,6 +1,7 @@
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';
@@ -51,11 +52,27 @@ class HomeViewModel extends BaseUIModel {
});
EventManager.addListener<CallStatusChangeEvent>(this, (event) {
yjPrint("HomeViewModel CallStatusChangeEvent state: ${event.model.state}");
if (event.model.state == "Incoming") {
showCallInfoView(event.model);
} else {
hideCallInfoView();
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;
}
});
}
@@ -85,7 +102,19 @@ class HomeViewModel extends BaseUIModel {
if (isShowCallView) {
return;
}
YJPush.presentWidget(context!, CallView(statusModel: model));
YJPush.presentWidget(
context!,
CallView(
statusModel: model,
onAction: (action) {
yjPrint("call view action: $action");
if (action == "accept") {
ChannelManager.acceptCall();
} else {
ChannelManager.rejectCall();
hideCallInfoView();
}
}));
isShowCallView = true;
}

View File

@@ -78,7 +78,9 @@ class ReserveView extends BaseUI with TickerProviderStateMixin {
width: 15,
),
InkWell(
onTap: () { },
onTap: () {
provider.testCallIncoming();
},
child: SizedBox(
width: 40,
height: 40,
@@ -95,9 +97,7 @@ class ReserveView extends BaseUI with TickerProviderStateMixin {
width: 5,
),
InkWell(
onTap: () {
provider.loadTableAreaList();
},
onTap: () { },
child: SizedBox(
width: 40,
height: 40,

View File

@@ -1,6 +1,7 @@
import 'package:cashier_reserve/common/base/ui_model.dart';
import 'package:cashier_reserve/common/channel/model/call_log_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';
@@ -138,6 +139,17 @@ class ReserveViewModel extends BaseUIModel {
loadReserveSms();
}
void testCallIncoming() {
CallStatusChangeModel model = CallStatusChangeModel(
state: "Incoming",
number: "123456789",
name: "测试",
region: "陕西省 西安市",
);
EventManager.postEvent(CallStatusChangeEvent(model: model));
}
void loadCallLog() {
ChannelManager.getCallLog("getCallLog");
}