Проблема потока выполнения с циклом For - Dart, Flutter

Здесь проблема в том, что code после цикла for выполняется до того, как выполнение цикла for завершится. Вот code, который вы можете проверить:

}

Журнал, который я получаю, выглядит следующим образом:

Почему я получаю журнал 6, даже если выполнение цикла for продолжается? Какая-то проблема, связанная с потоком. Пожалуйста, помогите.

bool setBmSelectedFilter(BmCustomFilterData? customFilterData, isAfterDelete,
  {bool isCalledAfterSave = false,
  String? savedFilterName,
  String? oldSelectedId}) {
if (isAfterDelete) {
  bool isDefaultExist = false;
  bool isSelectedExist = false;

  if (customFilterData?.bmCustomFilters != null) {
    for (var customFilter in customFilterData!.bmCustomFilters!) {
      if (customFilter.options != null &&
          customFilter.options!.isNotEmpty) {
        // Check if there is any option with isDefault = 1
        for (var option in customFilter.options!) {
          if (option.isDefault == 1) {
            print(">>>>>>>>>>>> log 1");
            isDefaultExist = true;
          }
          if (option.isSelected == true) {
            print(">>>>>>>>>>>> log 2");
            isSelectedExist = true;
          }

          // If both are found, we can exit the loop early
          if (isDefaultExist && isSelectedExist) {
            print(">>>>>>>>>>>> log 3");
            break;
          }
        }

        // If no isDefault = 1 exists, set the first option to isDefault = 1 and others to 0
        if (!isDefaultExist) {
          print(">>>>>>>>>>>> log 4");
          for (var i = 0; i < customFilter.options!.length; i++) {
            customFilter.options![i].isDefault = (i == 0) ? 1 : 0;
          }
        }

        // Handle the deletion cases
        if (isSelectedExist) {
          print(">>>>>>>>>>>> log 5");
          //none
          print("true");
        } else {
          print(">>>>>>>>>>>> log 6");
          // If isSelected = true record was deleted or options are empty
          for (var option in customFilter.options!) {
            if (option.name == 'all_open_bills'.tr()) {
              option.isSelected = true;
              bmAppliedFilterName = option.name;
            } else {
              option.isSelected = false;
            }
          }
        }
      } else {
        print(">>>>>>>>>>>> log 7");
        // Handle the case where options are empty after deletion
        for (var customFilter in customFilterData.bmCustomFilters!) {
          if (customFilter.options != null) {
            for (var option in customFilter.options!) {
              if (option.name == 'all_open_bills'.tr()) {
                option.isSelected = true;
                option.isDefault = 1;
              } else {
                option.isSelected = false;
                option.isDefault = 0;
              }
            }
          }
        }
      }
    }
  }
} 
this.customFilterData = customFilterData;
return true;
>>>>>>>>>> log 1
>>>>>>>>>> log 6
>>>>>>>>>> log 2
>>>>>>>>>> log 3
>>>>>>>>>> log 5
Регина
Вопрос задан15 марта 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.