首页 > 解决方案 > 使用 Flutter 打开数据库时出现意外文本“等待”

问题描述

我正在关注 Flutter Dev 网站上的Persist data with SQLite教程,我正在尝试使用 打开数据库连接async,但我不断收到错误消息Unexpected text 'await'。即使我直接从教程中复制代码,我仍然会遇到同样的错误。

这是我的完整文件:

import 'dart:async';

import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

// Open the database and store the reference.
final Future<Database> database = openDatabase(
    join(await getDatabasesPath(), 'doggie_database.db'),
);

据我所知,我正确使用了关键字,那么为什么编译器会抱怨呢?

我正在使用Dart 2.7.0-dev.2.1,如果这有所作为。

标签: flutterdartdart-async

解决方案


这似乎是一个异步问题。奇怪的是官方文档中的一个示例导致您陷入此错误。在需要的方法之外直接分配一个变量async。试试这个:

final Future<Database> database = getDatabasesPath().then((String path) {
  return openDatabase(join(path, 'doggie_database.db'));
});

为了将来参考,OP的代码不起作用的原因是因为他在main()Flutter方法之外运行它,这在Flutter文档提供的示例中是异步的:https ://flutter.dev/docs/cookbook/持久性/sqlite#example


推荐阅读