Невозможно присвоить значение с момента обратного вызова

#flutter #dart

Вопрос:

Я пытаюсь получить будущее значение и присвоить его bool. Я не могу использовать асинхронное/ожидание. Это мой код, но value он просто выводит нуль. futureFunction ВОЗВРАТ Future<bool>

 bool value;
futureFunction().then((a) { value = a; } );
print(value);
 

Комментарии:

1. возвращает ли функция futureFunction bool ?

2. Функция futureFunction возвращает будущее<bool> @KrishBhanushali

Ответ №1:

если вы поместите его в StatefulWidget, это должно сработать

 bool value;

_StatefulWidgetDemoState() {
  futureFunction().then(
    (returnedValue) => setState(() {
      value = returnedValue;
    })
  );
}
 

Комментарии:

1. Я уже пробовал это, но, похоже, не работает… вероятно, этот код находится в состоянии<>, а не в IDK StatefeulWidget. Но он постоянно что-то печатает в консоли, так что это не хороший знак

Ответ №2:

then не будет ждать, чтобы закончить какое-либо задание. После завершения будущей функции then будет выполнен код внутри. Установите then использование await ключевого слова use и не забудьте сделать функцию асинхронной. Пример:

 getBool() async{
 bool value = await futureFunction();
 print(value);
}
 

Комментарии:

1. Спасибо, но я уже упоминал, что не могу асинхронно//ждать. Мне нужно решение без этого

2. можете ли вы сказать мне, как использовать это значение bool? Вы хотите обновить пользовательский интерфейс или что-то еще?

3. Возвращаемое значение используется в условном операторе для создания виджета. В основном (boolReturn? widget1:widget2)

4. тогда вам следует использовать FutureBuilder