Flutter 中的快照是什么?
What is a snapshot in Flutter?
我一直在我的项目中使用 Firebase 数据库。我一直在关注教程,当将小部件返回给未来的构建器时,它说要使用:
if(snapshot.hasError) {
// Cannot connect to database
}
else {
// Return widgets as normal
}
我查看了 Flutter 文档,他们说快照是:
Immutable representation of the most recent interaction with an asynchronous computation.
但是这是什么意思,为什么上面的代码有意义?
快照只是您可能从 Firebase 得到的响应。所以他们在这里只是想检查响应是否为空。
要从收到的响应中访问数据,您只需执行以下操作:
final responseData = snapshot.data
事实上,您也可以将快照更改为您想要的任何名称。
快照是您在 FutureBuilder
中收听的 Future
或 Stream
的结果。
在与正在 return 编辑的数据交互并在您的构建器中使用它之前,您必须先访问它。
要访问这些数据,从技术上讲,这些数据是通过您的 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
有许多您可以使用的属性,例如 hasData
和 connectionStatus
.
如果你的未来被期望return你创建的对象,例如
Student(String name, int age)
您可以通过说 print(snapshot.data.name)
来打印姓名。
注意:快照有两个常见含义。一种是在构建方法中与 StreamBuilder 或 FutureBuilder 一起使用的方法。另一种是您从 Firebase 返回的数据类型。不幸的是,您经常在 FutureBuilder 或 StreamBuilder 中使用 Firebase 快照,它们也使用术语快照,并且来自 Firebase 的快照在适当的时间最终出现在构建器中的 snapshot.data 值中。呃!
我一直在我的项目中使用 Firebase 数据库。我一直在关注教程,当将小部件返回给未来的构建器时,它说要使用:
if(snapshot.hasError) {
// Cannot connect to database
}
else {
// Return widgets as normal
}
我查看了 Flutter 文档,他们说快照是:
Immutable representation of the most recent interaction with an asynchronous computation.
但是这是什么意思,为什么上面的代码有意义?
快照只是您可能从 Firebase 得到的响应。所以他们在这里只是想检查响应是否为空。
要从收到的响应中访问数据,您只需执行以下操作:
final responseData = snapshot.data
事实上,您也可以将快照更改为您想要的任何名称。
快照是您在 FutureBuilder
中收听的 Future
或 Stream
的结果。
在与正在 return 编辑的数据交互并在您的构建器中使用它之前,您必须先访问它。
要访问这些数据,从技术上讲,这些数据是通过您的 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
有许多您可以使用的属性,例如 hasData
和 connectionStatus
.
如果你的未来被期望return你创建的对象,例如
Student(String name, int age)
您可以通过说 print(snapshot.data.name)
来打印姓名。
注意:快照有两个常见含义。一种是在构建方法中与 StreamBuilder 或 FutureBuilder 一起使用的方法。另一种是您从 Firebase 返回的数据类型。不幸的是,您经常在 FutureBuilder 或 StreamBuilder 中使用 Firebase 快照,它们也使用术语快照,并且来自 Firebase 的快照在适当的时间最终出现在构建器中的 snapshot.data 值中。呃!