Вы пытаетесь добавить SimpleDialogOption
виджеты к children
, но вам нужно дождаться завершения в будущем, прежде чем добавлять их.
type 'Future' не является подтипом типа 'Виджет'
Эта ошибка должна дать вам подсказку: она ожидает виджеты, а вы даете ей будущее (dbHelper.getCategories().then((val)
возвращает Future
).
Что работает ждет ваших категорий перед отображением диалогового окна. Для этого вы можете использовать FutureBuilder
:
FutureBuilder(
future: dbHelper.getCategories(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
showDialog(
context: context,
barrierDismissible: true,
builder: (BuildContext context) {
return SimpleDialog(
title: const Text('Select Category '),
children: [
for (var item in snapshot.data) {
SimpleDialogOption(
onPressed: () { Navigator.pop(context); },
child: const Text('Food'),
);
}
}