【发布时间】:2021-08-29 23:51:44
【问题描述】:
我真的是 Flutter 和 SQLite 的新手。 我需要将从数据库中获取的一些数据存储到全局变量中(在此代码中,它是一个局部变量,仅用于示例),我不知道:
- 我能做到的最佳点在哪里(现在我把它放在主页的 initState 方法中);
- 如何将未来的数据存储在一个没有未来的变量中。
以下是数据提取的方法
class ObjectRepository {
ObjectRepository._();
static final ObjectRepository instance = ObjectRepository._();
Future<List<Map>> select(Database db, String tableName, {List<String> fields}) async {
sql = 'SELECT ' + (fields != null ? fields.toString() : '* ');
sql = sql + 'FROM $tableName';
final List<Map> list = await db.rawQuery(sql);
return list;
}
}
下面是我将 future> 放入 List
我什至尝试强制转换它,但在运行时遇到了类似的问题 "type 'Future>>' is not a subtype of type 'List
。
class HomePage extends StatefulWidget {
HomePage({Key key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
void initState() {
super.initState();
DBProvider.instance.openDB(globalConstants.dbName);
List<Map> list = ObjectRepository.instance.select(DBProvider.instance.database, 'tCars') as List<Map>;
}
@override
void dispose() {
DBProvider.instance.closeDB();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CustomAppBar(title: Text('Cars')),
drawer: CustomDrawer(),
body: CustomBody(),
);
}
}
知道如何解决吗?非常感谢,伙计们。
【问题讨论】:
-
这是一个未来。你必须在某个地方等待它。不要那么着急。 :)
标签: flutter sqlite casting future