在 flutter 中显示从 sqlite 到 simpledialog 的数据
Display data from sqlite to simpledialog in flutter
我想将数据从 sqlite 显示到 SimpleDialog 小部件
showDialog(
context: context,
barrierDismissible: true,
builder: (BuildContext context) {
return SimpleDialog(
title: const Text('Select Category '),
children: <Widget>[
dbHelper.getCategories().then((val) {
for (var item in val) {
SimpleDialogOption(
onPressed: () {
Navigator.pop(context);
},
child: const Text('Food'),
);
}
}),
],
);
});
执行此操作时出现以下错误:
type 'Future' is not a subtype of type 'Widget'
您正在尝试将 SimpleDialogOption
个小部件添加到 children
,但在添加它们之前需要等待未来完成。
type 'Future' is not a subtype of type 'Widget'
这个错误应该给你一个提示:它需要小部件,而你正在给它一个未来 (dbHelper.getCategories().then((val)
returns a 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'),
);
}
}
我想将数据从 sqlite 显示到 SimpleDialog 小部件
showDialog(
context: context,
barrierDismissible: true,
builder: (BuildContext context) {
return SimpleDialog(
title: const Text('Select Category '),
children: <Widget>[
dbHelper.getCategories().then((val) {
for (var item in val) {
SimpleDialogOption(
onPressed: () {
Navigator.pop(context);
},
child: const Text('Food'),
);
}
}),
],
);
});
执行此操作时出现以下错误:
type 'Future' is not a subtype of type 'Widget'
您正在尝试将 SimpleDialogOption
个小部件添加到 children
,但在添加它们之前需要等待未来完成。
type 'Future' is not a subtype of type 'Widget'
这个错误应该给你一个提示:它需要小部件,而你正在给它一个未来 (dbHelper.getCategories().then((val)
returns a 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'),
);
}
}