我试图在我的firestore文档集合中对一个整数字段求和,尽管我一直得到错误。看起来是因为firestore将整数存储为“num”。
无法从函数“calculateTotalItemQty”返回“Future”类型的值,因为它的返回类型为“int”。
import 'dart:convert';
import 'dart:math' as math;
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:intl/intl.dart';
import 'package:timeago/timeago.dart' as timeago;
import '/flutter_flow/lat_lng.dart';
import '/flutter_flow/place.dart';
import '/flutter_flow/uploaded_file.dart';
import '/flutter_flow/custom_functions.dart';
import '/backend/backend.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import '/backend/schema/structs/index.dart';
import '/auth/firebase_auth/auth_util.dart';
int calculateTotalItemQty(
String? itemId,
String? businessId,
) {
/// MODIFY CODE ONLY BELOW THIS LINE
// sum value of all itemQty in purchaseLine where itemId is itemId and businessId is businessId
return FirebaseFirestore.instance
.collection('purchases')
.where('itemId', isEqualTo: itemId)
.where('businessId', isEqualTo: businessId)
.get()
.then((querySnapshot) {
int totalQty = 0;
querySnapshot.docs.forEach((doc) {
int value = doc['itemQty'];
totalQty += value.toInt();
});
return totalQty;
}).catchError((error) {
print('Error getting total item qty: $error');
return null;
});
/// MODIFY CODE ONLY ABOVE THIS LINE
}
字符串
尝试使用.toInt()但仍然无法工作
3条答案
按热度按时间3wabscal1#
正如其他人提到的,你可以让你的函数
async
并返回一个Future。然而,在FlutterFlow的自定义代码部分,“自定义操作”可以返回Future而不是“自定义函数”。因此,您可以将代码移动到自定义操作片段下,它应该可以工作。
您可以在Action Flow Editor中调用该自定义操作,在那里您可以获取返回的
int
值,然后对它执行任何您想要的操作。4c8rllxm2#
你需要在Firebase方法前面添加
await
关键字。像下面的代码一样字符串
rqenqsqc3#
问题是你的函数试图返回一个
Future<int>
而不仅仅是一个int
。要解决这个问题,让你的函数async
并使用await
关键字进行Firestore查询。字符串
我希望这能帮上忙。