Я хочу создать для своего приложения функцию, которая проходит через асинхронный список, чтобы проверять, был ли ранее куплен элемент, и отображать диалоговое окно, если это было так. Поскольку Asyncvalue.when() имеет параметры данных, ошибок и загрузки, будущий тип showDialog создает конфликт возвращаемого типа с CircularProgressIndicator или текстовым сообщением об ошибке, которое я мог бы показать. Можете ли вы сообщить мне, если описанный ниже подход ошибочен, или есть какие-либо предложения?
Я хочу создать для своего приложения функцию, которая проходит через асинхронный список, чтобы проверять, был ли ранее куплен элемент, и отображать диалоговое окно, если это было так. Поскольку Asyncvalue.when() имеет параметры данных, ошибок и загрузки, будущий тип showDialog создает конфликт возвращаемого типа с CircularProgressIndicator или текстовым сообщением об ошибке, которое я мог бы показать. Можете ли вы сообщить мне, если описанный ниже подход ошибочен, или есть какие-либо предложения? [code]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())), ); } [/code] Сообщение об ошибке следует за центральным виджетом, который невозможно вернуть из функции Future.