FutureBuilder Flutter从我的计算中不返回任何数据

时间:2020-05-07 06:55:50

标签: flutter dart async-await

我无法让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

0 个答案:

没有答案