Future<int> 无法从 Firebase 获取数据

Posted

技术标签:

【中文标题】Future<int> 无法从 Firebase 获取数据【英文标题】:Future<int> not able to get data from Firebase 【发布时间】:2019-08-10 13:08:54 【问题描述】:

我正在尝试使用 Flutter 在 Firebase 中获取集合的长度。我有一个个人资料页面,可以加载您从数据库中完成的远足次数,但是当我打印变量时,我不断收到Future&lt;int&gt;。我该如何解决这个问题?

class ProfilePage extends StatefulWidget 
   @override
  _ProfilePage createState() => new _ProfilePage();


int doneHikes;
Database temp = new Database();

class _ProfilePage extends State<ProfilePage> 

@override
  void initState() 
  super.initState();
  _numOfDoneHikes();


Future<void> _numOfDoneHikes() async
  var asyncResult = await temp.numOfDoneHikes();
  setState(() => doneHikes = asyncResult);
  print(doneHikes);


数据库对象中的numOfDoneHikes函数:

Future<int> numOfDoneHikes() async 
  return Firestore.instance.collection(globalUserName)
    .document("Done Hikes").collection("Hike List").snapshots().length;

使用此代码,我不断收到doneHikes 打印

instance of Future<int>

【问题讨论】:

【参考方案1】:

你可以使用等待:

Future<int> numOfDoneHikes() async 
  return await Firestore.instance.collection(globalUserName)
    .document("Done Hikes").collection("Hike List").snapshots().length;

事实上,你甚至不需要等待,你可以这样做:

Future<int> numOfDoneHikes() 
  return Firestore.instance.collection(globalUserName)
    .document("Done Hikes").collection("Hike List").snapshots().length;

【讨论】:

以上是关于Future<int> 无法从 Firebase 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

参数类型“Future<int>”不能分配给参数类型“int”

如何将 Future<int> 转换为 int?

类型 'Future<dynamic>' 不是 Flutter 数据库创建中的“Future<int>”类型异常的子类型

在颤振飞镖中将 Future<int> 转换为 int

不完整类型 'class std::future<int> 的无效使用

参数类型“Future<>”不能分配给参数类型“”