recordEvent method
记录打点事件
Implementation
Future<void> recordEvent({
required String sessionId,
required String eventCode,
required String eventName,
required EventType eventType,
required int timestamp,
String? belongPage,
Map<String, dynamic>? extra,
required Function() onSuccess,
required Function() onError,
}) async {
// 获取位置信息
final loaction = await IpLocation.getIpLocation();
// 将 extra 转为 JSON 字符串
final extraContent = extra == null ? null : jsonEncode(extra);
// 是否测试环境
bool isTest = !kReleaseMode;
var parameters = {
"sessionId": sessionId,
"uuid": _userid,
"eventCode": eventCode,
"eventName": eventName,
"eventType": eventType.typeCode,
"eventTime": timestamp,
"userIp": loaction?.ip ?? "",
"countryCode": loaction?.country ?? "",
"cityCode": loaction?.city ?? "",
"systemVersion": _systemVersion,
"appVersion": _appVersion,
"attrPage": belongPage ?? "",
"eventContent": extraContent,
"env": isTest ? "dev" : "prd",
};
try {
var response = await NetRequest.shared.postJson(
_api,
parameters: parameters,
isShowLoading: false,
);
if (response?["code"] != 0) {
onError();
} else {
onSuccess();
if (kDebugMode) {
print(
"打点成功: $eventName, eventCode: $eventCode, belongPage: $belongPage, extra: $extra, type: $eventType",
);
}
}
} catch (e) {
onError();
return;
}
}