Я не могу заставить 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()
.
Кто-нибудь может заметить, где я? что-то пошло не так?
Заранее благодарим за помощь!
Джейсон