Fin*_*nno 5 snapshot dart flutter
我一直在我的项目中使用 Firebase 数据库。我一直在关注一个教程,当将小部件返回给未来的构建器时,它说要使用:
if(snapshot.hasError) {
// Cannot connect to database
}
else {
// Return widgets as normal
}
Run Code Online (Sandbox Code Playgroud)
我检查了 Flutter 文档,他们说快照是:
最近与异步计算交互的不可变表示。
但这是什么意思,为什么上面的代码有意义呢?
Hut*_*yad 20
Future快照是或Stream您在 中收听的结果FutureBuilder。
在与返回的数据进行交互并在构建器中使用它之前,您必须先访问它。
要访问这些数据(从技术上讲,这些数据是由您的 间接提供给您的)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());
}),
Run Code Online (Sandbox Code Playgroud)
如果您将其称为“finno”,则稍后可以通过键入 来访问此信息finno.data。
snapshot有许多可以利用的属性,例如hasData和connectionStatus。
例如,如果您的未来预计会返回您创建的对象
Student(String name, int age)
Run Code Online (Sandbox Code Playgroud)
您可以通过说 来打印姓名print(snapshot.data.name)。
注意:快照有两种常见含义。一种是在构建方法中与 StreamBuilder 或 FutureBuilder 一起使用的那种。另一种是您从 Firebase 返回的数据类型。不幸的是,您经常在 FutureBuilder 或 StreamBuilder 中使用 Firebase 快照,它们也使用术语“快照”,并且来自 Firebase 的快照会在适当的时间出现在构建器中的 snapshot.data 值中。啊!