弹出电话页面

This commit is contained in:
GYJ
2024-11-27 18:18:08 +08:00
parent 938a5df35f
commit 1da1683adc
14 changed files with 252 additions and 16 deletions

View File

@@ -1,15 +1,17 @@
import 'dart:convert';
import 'package:cashier_reserve/common/channel/model/call_status_change_model.dart';
import 'package:cashier_reserve/common/print/print.dart';
import 'package:flutter/services.dart';
import '../manager/event_manager.dart';
import 'call_log_model.dart';
import 'model/call_log_model.dart';
import 'names.dart';
class MyEventChannel {
static void startListener() {
onGetCallLogResult();
onCallStatusChange();
}
static void onGetCallLogResult() {
@@ -35,4 +37,18 @@ class MyEventChannel {
yjPrint("onGetCallLogResult error");
});
}
static void onCallStatusChange() {
EventChannel channel = EventChannel(getChannelName(kCallStatusChange));
channel.receiveBroadcastStream().listen((Object? o) {
yjPrint("onCallStatusChange: $o");
if (o is String) {
Map<String, dynamic> m = json.decode(o);
CallStatusChangeModel model = CallStatusChangeModel.fromJson(m);
EventManager.postEvent(CallStatusChangeEvent(model: model));
}
}, onError: (Object error) {
yjPrint("onCallStatusChange error");
});
}
}

View File

@@ -0,0 +1,54 @@
import 'dart:convert';
/// state : "Incoming"
/// number : "18020143310"
/// name : "gong"
/// region : "江苏省 南京市"
CallStatusChangeModel callStatusChangeModelFromJson(String str) => CallStatusChangeModel.fromJson(json.decode(str));
String callStatusChangeModelToJson(CallStatusChangeModel data) => json.encode(data.toJson());
class CallStatusChangeModel {
CallStatusChangeModel({
String? state,
String? number,
String? name,
String? region,}){
_state = state;
_number = number;
_name = name;
_region = region;
}
CallStatusChangeModel.fromJson(dynamic json) {
_state = json['state'];
_number = json['number'];
_name = json['name'];
_region = json['region'];
}
String? _state;
String? _number;
String? _name;
String? _region;
CallStatusChangeModel copyWith({ String? state,
String? number,
String? name,
String? region,
}) => CallStatusChangeModel( state: state ?? _state,
number: number ?? _number,
name: name ?? _name,
region: region ?? _region,
);
String? get state => _state;
String? get number => _number;
String? get name => _name;
String? get region => _region;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['state'] = _state;
map['number'] = _number;
map['name'] = _name;
map['region'] = _region;
return map;
}
}

View File

@@ -4,6 +4,8 @@ const String kGetCallLog = 'getCallLog';
const String kCallLogCallback = 'callLogCallback';
const String kCallStatusChange = 'callStatusChange';
String getChannelName(name) {
return kChannelBaseName + name;
}

View File

@@ -1,6 +1,7 @@
import 'dart:async';
import 'package:cashier_reserve/common/channel/call_log_model.dart';
import 'package:cashier_reserve/common/channel/model/call_log_model.dart';
import 'package:cashier_reserve/common/channel/model/call_status_change_model.dart';
import 'package:event_bus/event_bus.dart';
@@ -51,4 +52,10 @@ class GetCallLogEvent extends MyEvent {
bool isSuccess = false;
GetCallLogEvent({this.callLogs = const [], this.isLoadMore = false, this.isSuccess = false});
}
class CallStatusChangeEvent extends MyEvent {
CallStatusChangeModel model;
CallStatusChangeEvent({required this.model});
}