我到处找,没有找到解决办法。我想从查询中返回结果计数,但遇到了麻烦。继续获得“未来的实例”而不是字符串
我正在使用单例模式。
Future<int> getUnCompletedTaskCount () async {
final db = await database;
var result = await db.rawQuery("SELECT * FROM Tasks WHERE isComplete = 0");
int count = Sqflite.firstIntValue(result);
return count;
}
Run Code Online (Sandbox Code Playgroud)
getResultCount () async {
final value = await DBProvider.db.getUnCompletedTaskCount();
return value;
}
Run Code Online (Sandbox Code Playgroud)
getResultCount().toString()
Run Code Online (Sandbox Code Playgroud)
我不知道你将如何使用这个函数,如果你需要它来获取已完成任务的数量然后在屏幕上绘制一些东西(比如显示它们的列表或显示它们的数量),我自己使用 FutureBuilder,如下图:
FutureBuilder<int>(
future: getResultCount(),
builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
if(snapshot.hasData){
return Text('Number Of completed : ${snapshot.data}');
}
return Container();
},
)
Run Code Online (Sandbox Code Playgroud)
所以当它完全获取它时,它会显示一个文本小部件,否则它什么都不显示(空容器)
但是如果你需要它,让我们说一个方程或其他东西,你可以做这样的事情:
await getResultCount().then((val){
// do some operation
});
Run Code Online (Sandbox Code Playgroud)
但它再次完全取决于您的代码和需要。
当您需要在代码中使用 future 函数的结果时,请先使用await它。
当你需要使用它的结果时就像getResultCount()使用一样await。
| 归档时间: |
|
| 查看次数: |
10776 次 |
| 最近记录: |