在 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'),
                );
              }
            }