我无法让FutureBuilder显示我的计算中的任何数据。我知道计算绝对正确,因为我可以得到正确的答案以打印到控制台中,但似乎无法使其显示在应用程序本身中。
以下是该代码的代码:
Future<String> getBeerDrinksTarget() async {
final user = await _auth.currentUser();
loggedInUser = user;
double beerNumber;
var query = _firestore
.collection('goals')
.where('email', isEqualTo: '${loggedInUser.email}');
query.getDocuments(source: Source.cache).then((data) {
beerPercentage = data.documents[0].data['beerPercentage'];
var y = double.parse(beerPercentage);
double beerNumber = (y / 100) * 21;
print('${beerNumber.toStringAsFixed(1)} target number of weekly beers');
print('$beerPercentage% weekly beer target as a percentage of total weekly drinks');
});
return beerNumber.toStringAsFixed(1);
}
这是FutureBuilder小部件的代码:
FutureBuilder<String>(
future: getBeerDrinksTarget(),
builder: (BuildContext context,
AsyncSnapshot<String> snapshot) {
if (snapshot.hasData) {
return Center(
child: Text(
'${snapshot.data}',
),
);
} else
return Text('no data yet');
}),
关于这一点的奇怪之处在于,如果我将return beerNumber.toStringAsFixed(1);
交换为return beerPercentage;
,它将在应用程序中显示beerPercentage罚款。这表明FutureBuilder代码是可以的。但是,当我使用return beerNumber.toStringAsFixed(1);
时为什么不起作用?这是我需要在应用程序中显示的部分。这很奇怪,因为可以将计算结果完美地打印到控制台中,因此这表明我一定在FutureBuilder()
代码中犯了一个错误,而不是getBeerDrinksTarget()
代码中的错误。
任何人都可以发现我错了吗?
在此先感谢您的帮助!
Jason