使用 Flutter 打开数据库时出现意外文本 'await'
Unexpected text 'await' when opening database with 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
如果这会有所作为。
这似乎是异步性的问题。奇怪的是官方文档中的一个例子导致你犯了这个错误。在需要 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/persistence/sqlite#example
我正在按照 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
如果这会有所作为。
这似乎是异步性的问题。奇怪的是官方文档中的一个例子导致你犯了这个错误。在需要 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/persistence/sqlite#example