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 {
  if (_api.isEmpty) {
    return;
  }

  // 获取位置信息
  final loaction = await IpLocation.getIpLocation();
  // 将 extra 转为 JSON 字符串
  final extraContent = extra == null ? null : jsonEncode(extra);
  // 是否测试环境
  bool isTest = !kReleaseMode;

  if (_apiParameterNameModel == null) {
    return;
  }

  var parameters = {
    _apiParameterNameModel!.sessionId: sessionId,
    _apiParameterNameModel!.uuid: _userid,
    _apiParameterNameModel!.eventCode: eventCode,
    _apiParameterNameModel!.eventName: eventName,
    _apiParameterNameModel!.eventType: eventType.typeCode,
    _apiParameterNameModel!.eventTime: timestamp,
    _apiParameterNameModel!.userIp: loaction?.ip ?? "",
    _apiParameterNameModel!.countryCode: loaction?.country ?? "",
    _apiParameterNameModel!.cityCode: loaction?.city ?? "",
    _apiParameterNameModel!.systemVersion: _systemVersion,
    _apiParameterNameModel!.appVersion: _appVersion,
    _apiParameterNameModel!.attrPage: belongPage ?? "",
    _apiParameterNameModel!.eventContent: extraContent,
    _apiParameterNameModel!.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;
  }
}