Open
Description
static void destroy({tag}) {
_list.forEach((rxBus) {
if (tag != null && tag != _DEFAULT_IDENTIFIER && rxBus.tag == tag) {
rxBus.subject.close();
_list.remove(rxBus);
} else if ((tag == null || tag == _DEFAULT_IDENTIFIER) && rxBus.tag == _DEFAULT_IDENTIFIER) {
rxBus.subject.close();
_list.remove(rxBus);
}
});
}
在进行迭代循环时试图删除list中内容,导致异常抛出,建议的修改方案如:
///事件关闭
static void destroy({tag}) {
var toRemove = [];
_list.forEach((rxBus) {
if (tag != null && tag != _DEFAULT_IDENTIFIER && rxBus.tag == tag) {
rxBus.subject.close();
toRemove.add(rxBus);
} else if ((tag == null || tag == _DEFAULT_IDENTIFIER) &&
rxBus.tag == _DEFAULT_IDENTIFIER) {
rxBus.subject.close();
toRemove.add(rxBus);
}
});
toRemove.forEach((rxBus) {
_list.remove(rxBus);
});
}
Metadata
Metadata
Assignees
Labels
No labels