flush method

void flush()

Implementation

void flush() {
  if (_queue.isEmpty) return;
  final uploadList = List.from(_queue);
  _queue.clear();
  final config = AutoTrackConfigManager.instance.config;
  final host = config.host;
  if (host != null) {
    final t = DateTime.now().millisecondsSinceEpoch;
    dio.post(host, data: {
      'app_key': config.appKey ?? '',
      'signature': config.signature!(t),
      't': t,
      'user_id': config.userId ?? '',
      'track_id': config.trackId ?? '',
      'unique_id': config.uniqueId ?? AutoTrackConfigManager.instance.deviceId,
      'device_id': AutoTrackConfigManager.instance.deviceId,
      'data_list': uploadList.map((e) => e.toMap()).toList(),
      'app_version': AutoTrackConfigManager.instance.appVersion,
      'device_info': AutoTrackConfigManager.instance.deviceInfo
    }).onError((error, stackTrace) {
      AutoTrackLogger.getInstance().error(error!);
      return Future.value(Response(statusCode: 500, requestOptions: RequestOptions(path: host)));
    });
  }
}