Flutter/Dart: тип возвращаемого значения функции для возврата ShowDialog на основе списка AsyncValue.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Flutter/Dart: тип возвращаемого значения функции для возврата ShowDialog на основе списка AsyncValue.

Сообщение Anonymous »

Я хочу создать для своего приложения функцию, которая проходит через асинхронный список, чтобы проверять, был ли ранее куплен элемент, и отображать диалоговое окно, если это было так. Поскольку Asyncvalue.when() имеет параметры данных, ошибок и загрузки, будущий тип showDialog создает конфликт возвращаемого типа с CircularProgressIndicator или текстовым сообщением об ошибке, которое я мог бы показать. Можете ли вы сообщить мне, если описанный ниже подход ошибочен, или есть какие-либо предложения?

Код: Выделить всё

Future itemPreviouslyBought(BuildContext context, Item newItem, AsyncValue currentItemList) {
return currentItemList.when(
data: (item) {
final matchedElement = item.firstWhere(
(element) =>
element.productName.toLowerCase() ==
newItem.productName.toLowerCase(),
);

return showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Item Previously Bought!'),
content: SingleChildScrollView(
child: ListBody(
children: [
Text("You have bought this item before."),
],
),
),
actions: [
TextButton(
child: const Text('Okay'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
},
loading: () => const Center(child: CircularProgressIndicator()),
error: (e, st) => Center(child: Text(e.toString())),
);
}
Сообщение об ошибке следует за центральным виджетом, который невозможно вернуть из функции Future.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -asyncvalu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»