Flutter中的快照是什么



我一直在项目中使用Firebase数据库。我一直在学习一个教程,当将小部件返回到未来的构建器时,它说要使用:

if(snapshot.hasError) {
// Cannot connect to database
}
else {
// Return widgets as normal
}

我查看了Flutter文档,他们说快照是:

最近与异步计算交互的不可变表示。

但这意味着什么,为什么上面的代码有意义?

快照是您在FutureBuilder中侦听的FutureStream的结果。

在与返回的数据交互并在构建器中使用它之前,您必须首先访问它。

要访问这些数据,从技术上讲,这些数据是由您的FutureBuilder间接提供给您的,您需要向FutureBuilder索取。

你首先说snapshot,因为可以说这是你告诉Flutter你将要使用的昵称,因为你的Future构建器看起来像这样:

FutureBuilder(
future: someFutureFunction(),
builder: (context, snapshot) { // Here you told Flutter to use the word "snapshot".
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else
return Text(counter.toString());
}),

如果你把它称为";finno";,您稍后可以通过键入finno.data来访问此信息。

snapshot有许多属性可以使用,如hasDataconnectionStatus

如果您的未来被期望返回您创建的对象,例如

Student(String name, int age)

您可以通过说print(snapshot.data.name)来打印名称。

注意:快照有两个常见的含义。一个是在构建方法中与StreamBuilder或FutureBuilder一起使用的。另一种是从Firebase获取的数据。不幸的是,您经常在FutureBuilder或StreamBuilder中使用Firebase快照,后者也使用术语snapshot,并且Firebase的快照在适当的时候最终会出现在构建器中的snapshot.data值中。啊!

快照只是您可能从Firebase得到的响应。所以在这里,他们只是试图检查响应是否为空。

要从收到的响应中访问数据,您只需执行以下操作:

final responseData = snapshot.data

事实上,您还可以将快照更改为所需的任何名称。

最新更新