简体   繁体   English

连续流列出,没有重复

[英]Continuous stream to list with no repeats

I have a stream of data that I want to turn into a list/map of key value pairs.我有一个数据流,我想将其转换为键值对列表/映射。 I want to pair each "fault" with corresponding "severity" and display the pairs as a list.我想将每个“故障”与相应的“严重性”配对,并将这些对显示为列表。 My issue is that my list keeps growing and I am unable to check if the value that's being added is already in the list.我的问题是我的列表不断增长,我无法检查添加的值是否已经在列表中。

Code:代码:


  List<int> severityList = [0];
  List faultItems = [0];
  var lastFault;

  Widget _buildFaultOutput(snapshot) {
    //New growable lists with 0 set as the first value to prevent error

    var msg = snapshot.data;
    print(msg);

    var faultList = msg["fault_list"];
    print("faultList: $faultList");

    var numberOfFaults = faultList.length;
    print("Number of faults: $numberOfFaults");

    if (faultList.length == 0) {
      return Text("None");
    } else {
      int i = 0;

      for (var i = 0; i < faultList.length; i++) {
        // print(faults);
        // print("i: $i");
        var faults = faultList[i];
        var motorCurrent = faults["fault"];
        var severity = faults["severity"];

        if (motorCurrent != lastFault) {
          faultItems.insert(i, motorCurrent);
          severityList.insert(i, severity);
          print('added ${faultItems[i]}, severity: ${severityList[i]}');

          lastFault = motorCurrent;
        } else {}

        //TODO: add list of faults with key/value pairs (fault:severity): Text of "motorCurrent" in color of severity

        //TODO: Print each individual item from list with severity
        // return Text(
        //     "Number of Faults: ${faultList.length}\n$faultItems\nSeverity: ${severityList[i]}");
      }
    }
    return Text(
        "Number of Faults: ${faultList.length}\n$faultItems\nSeverity: $severityList");
  }

Example data:示例数据:

I/flutter (21022): {fault_list: [{fault: voltage fault, process_name: BetaFirmware::bmsVoltageFaultCallback(), severity: 0, time_stamp: {secs: 1603209904, nsecs: 581818990}}, {fault: motor temp: 2, process_name: BetaFirmwareBase::checkMotorSafety(), severity: 2, time_stamp: {secs: 1603209905, nsecs: 575800930}}, {fault: motor temp: 5, process_name: BetaFirmwareBase::checkMotorSafety(), severity: 2, time_stamp: {secs: 1603209905, nsecs: 575800930}}, {fault: motor temp: 6, process_name: BetaFirmwareBase::checkMotorSafety(), severity: 2, time_stamp: {secs: 1603209905, nsecs: 620800930}}, {fault: motor temp: 3, process_name: BetaFirmwareBase::checkMotorSafety(), severity: 2, time_stamp: {secs: 1603209905, nsecs: 620800930}}, {fault: motor temp: 9, process_name: BetaFirmwareBase::checkMotorSafety(), severity: 2, time_stamp: {secs: 1603209905, nsecs: 620800930}}, {fault: motor temp: 4, process_name: BetaFirmwareBase::checkMotorSafety(), severity: 2, time_stamp: {secs: 1603209905, nsecs: 620800930}}, {fault: motor temp: 7, process_na
I/flutter (21022): faultList: [{fault: voltage fault, process_name: BetaFirmware::bmsVoltageFaultCallback(), severity: 0, time_stamp: {secs: 1603209904, nsecs: 581818990}}, {fault: motor temp: 2, process_name: BetaFirmwareBase::checkMotorSafety(), severity: 2, time_stamp: {secs: 1603209905, nsecs: 575800930}}, {fault: motor temp: 5, process_name: BetaFirmwareBase::checkMotorSafety(), severity: 2, time_stamp: {secs: 1603209905, nsecs: 575800930}}, {fault: motor temp: 6,

在方法 _buildFaultOutput(snapshot) 的开头添加severityList.clear() 和faultList.clear() 行

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM