flutter - 使用 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/持久性/sqlite#example
推荐阅读
- python - 工作 10-15 秒后关闭烧瓶
- vba - VBA 代码仅适用于第一张纸
- ruby-on-rails - 连接两个查询集 - Ruby on Rails 和 MongoDB
- php - 通过 Dropbox API 上传后无法从服务器取消链接(删除)文件
- php - Php,MySql - 将数据作为键值对插入两个表中
- cassandra - Cassandra - Nodetool 状态显示“拥有为?”
- fortran - 声明多组变量时出现 Gfortran 编译错误
- javascript - 过滤特定复选框
- passenger - 乘客作为 Apache 模块:看门狗和乘客核心以 root 身份运行
- javascript - 验证输入字段以进行人工测试