recordEvent method

Future<void> recordEvent({
  1. required String sessionId,
  2. required String eventCode,
  3. required String eventName,
  4. required EventType eventType,
  5. required int timestamp,
  6. String? belongPage,
  7. Map<String, dynamic>? extra,
  8. required dynamic onSuccess(),
  9. required dynamic onError(),
})

记录打点事件

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;
  }
}