Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振碰撞清除自定义键_Flutter_Crashlytics - Fatal编程技术网

Flutter 颤振碰撞清除自定义键

Flutter 颤振碰撞清除自定义键,flutter,crashlytics,Flutter,Crashlytics,我在我的Flitter应用程序包中使用Crashlytics 我了解到我可以使用自定义键通过setCustomKey方法发送附加数据。但是,我找不到一种方法来删除它,以用于下一个错误报告 这是我的firebase\u记录器。dart class FirebaseLogger implements ILogger { FirebaseCrashlytics get _crashlytics => FirebaseCrashlytics.instance; @override F

我在我的Flitter应用程序包中使用Crashlytics

我了解到我可以使用自定义键通过
setCustomKey
方法发送附加数据。但是,我找不到一种方法来删除它,以用于下一个错误报告

这是我的
firebase\u记录器。dart

class FirebaseLogger implements ILogger {
  FirebaseCrashlytics get _crashlytics => FirebaseCrashlytics.instance;

  @override
  Future<void> init() async {
    await Firebase.initializeApp();
  }

  @override
  Future<void> trackError(
    String name, {
    Map<String, String> properties,
    dynamic exception,
    StackTrace stackTrace,
  }) async {
    final String userId = getUserId();
    if (userId != null) _crashlytics.setUserIdentifier(userId);

    properties.forEach((key, value) {
      _crashlytics.setCustomKey(key, value);
    });
    _crashlytics.recordError(exception, stackTrace);

    // Clear the keys for the next log    
    properties.forEach((key, value) {
      _crashlytics.setCustomKey(key, '');
    });
    if (employeeId != null) _crashlytics.setUserIdentifier('');
    
  }
}

类FirebaseLogger实现ILogger{
FirebaseCrashlytics get _crashlytics=>FirebaseCrashlytics.instance;
@凌驾
Future init()异步{
等待Firebase.initializeApp();
}
@凌驾
未来跟踪误差(
字符串名{
地图属性,
动态异常,
StackTrace StackTrace,
})异步的{
最后一个字符串userId=getUserId();
if(userId!=null)\u crashlytics.setUserIdentifier(userId);
properties.forEach((键,值){
_crashlytics.setCustomKey(键,值);
});
_recordError(异常,stackTrace);
//清除下一个日志的键
properties.forEach((键,值){
_setCustomKey(键“”);
});
如果(employeeId!=null)\u crashlytics.setUserIdentifier(“”);
}
}
下面是我的错误方法:

  Future<void> testError1() async {
    try {
      throw Exception('error 1');
    } catch (e, s) {
      await _logger.trackError(
        'testError1',
        properties: {'name1': 'name 1', 'id1': 'id 1'},
        exception: e,
        stackTrace: s,
      );
    }
  }

  Future<void> testError2() async {
    try {
      throw Exception('error 2');
    } catch (e, s) {
      await _logger.trackError(
        'testError2',
        properties: {'name2': 'name 2', 'id2': 'id 2'},
        exception: e,
        stackTrace: s,
      );
    }
  }
Future testError1()异步{
试一试{
抛出异常(“错误1”);
}渔获物(东、南){
等待_logger.trackError(
“测试错误1”,
属性:{'name1':'name1','id1':'id1'},
例外情况:e,
stackTrace:s,
);
}
}
Future testError2()异步{
试一试{
抛出异常(“错误2”);
}渔获物(东、南){
等待_logger.trackError(
“测试错误2”,
属性:{'name2':'name2','id2':'id2'},
例外情况:e,
stackTrace:s,
);
}
}
我尝试触发
testError1
,然后触发
testError2
。 我读到(可能不再有效)我必须在android SDK中将其设置为null或空,但在Flatter中,他们使用assert not null进行了检查。如果给它们空值,则得到
testError2
empty
id1
name1
属性的结果。是否有重置键/属性的方法