颤振:不进入功能

时间:2019-07-03 09:39:59

标签: android flutter dart

在发行版中,应用程序不输入功能。在调试中,所有操作均正确完成。在上面的代码中:显示handler-1,但不显示handler-2。

void add(MeasuringDto measuringDto) async{
    if(!showIsOn && measuringDto.isFilled){
      count++;
      if(count % rangeToPost == 0){
        measurings.add(measuringDto);
      }
      if(measurings.length >= countToPost){
        showIsOn = true;
        print("handler-1");
        await handler(measurings);
        print("handler-2");
        measurings.clear();
        showIsOn = false;
      }
    }
  }

*更新

我想我找到了原因:我使用lambda函数收听流。据我了解,在调试模式下,此lambda在单独的线程中执行,而在释放模式下-在UI线程中执行。并且由于流经常生成新数据,因此在释放中,UI线程已完全加载。但是我还是不明白如何解决这个问题,如何释放UI线程。

var subscription = characteristic.value.listen((value) {
  _measuringPool.add(MeasuringDto(value));
});

* update-2

  void _measuringHandler(List<MeasuringDto> measuringDtos) async {
    CardioDto cardioDto = new CardioDto(measuringDtos);
    try {
      await writeECG(cardioDto);
    } on DataPostFailedException catch (e) {
      print(e);
    }
  }

void writeECG(CardioDto cardioDto) async {
  var response = await http.post(address + "addECGMeasurements",
      body: cardioDto.toJson(), headers: headers);
  updateCookie(response);
  var dataAnswerDto = DataAnswerDto.fromJson(response.body);
  if (response.statusCode != 200 || !dataAnswerDto.success) {
    print("Error while posting ECG measurements: " + dataAnswerDto.error);
    throw DataPostFailedException();
  }
}

1 个答案:

答案 0 :(得分:0)

请进一步介绍您的处理程序(测量)功能。

当我的调用函数访问互联网时,我遇到了同样的问题。 由于我没有在AndroidManifes.xml中请求互联网访问,因此它在调试模式下工作正常,但是在发布模式下抛出了错误...