Flutter 中 Futurebuilder 中的快照到底是什么意思?
What exactly means the snapshot in a Futurebuilder in Flutter?
我不确定我在 Flutter 中的快照是否正确。
所以我想问问大家是否同意我对snapshot的看法。
假设我有下面的 FutureBuilder:
FutureBuilder(
future: someFutureFunction(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else
return Text(counter.toString());
}),
例如someFutureFunction()
returns Future<String>
... FutureBuilder(builder: (context, snapshot){}
中的回调中的snapshot
是否需要访问返回值( Future<String>
) someFutureFunction()
??
我只是想在脑子里保存错误信息之前先确认一下是否正确:)
谢谢
快照是与您最近的互动 API
例如,如果您刚刚发送了您的请求,直到得到答复,connectionState 处于等待状态,如果收到答复,快照中的数据将被填充....并且您提出的问题和答案是肯定的
Snapshot 是您的数据的包装器,具有一些有用的属性。它提供您的连接状态,以便您可以根据状态变化确定和更新您的视图。如果将它用于任何网络调用,您会更好地理解它。 ConnectionStates 可以是以下任何一种。
活跃
Connected to an active asynchronous computation.
For example, a Stream that has returned at least one value, but is not yet done.
完成
Connected to a terminated asynchronous computation.
none
Not currently connected to any asynchronous computation.
For example, a FutureBuilder whose FutureBuilder.future is null.
等待中
Connected to an asynchronous computation and awaiting interaction.
此外,您可能会收到在获取数据时可能遇到的任何错误。
这是 FutureBuilder 的一个更好的例子,它可以处理其他一些情况...
FutureBuilder<String>(
future: someFutureFunction(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else if (snapshot.hasData)
return Text(snapshot.data);
else if (snapshot.hasError)
return Text('Error occured!');
})
您可以从此处找到有关快照的更多信息
https://api.flutter.dev/flutter/widgets/AsyncSnapshot-class.html
快照在内部作为 AsyncSnapshot
工作,它随着指定的 [connectionState] 和可选的 [data] 或 [error] 以及可选的 [stackTrace] 而改变(但不是数据和错误)。
查看下面的代码了解更多详情:
/// Creates an [AsyncSnapshot] in [ConnectionState.none] with null data and error.
const AsyncSnapshot.nothing() : this._(ConnectionState.none, null, null, null);
/// Creates an [AsyncSnapshot] in [ConnectionState.waiting] with null data and error.
const AsyncSnapshot.waiting() : this._(ConnectionState.waiting, null, null, null);
/// Creates an [AsyncSnapshot] in the specified [state] and with the specified [data].
const AsyncSnapshot.withData(ConnectionState state, T data): this._(state, data, null, null);
/// Creates an [AsyncSnapshot] in the specified [state] with the specified [error]
/// and a [stackTrace].
///
/// If no [stackTrace] is explicitly specified, [StackTrace.empty] will be used instead.
const AsyncSnapshot.withError(
ConnectionState state,
Object error, [
StackTrace stackTrace = StackTrace.empty,
]) : this._(state, null, error, stackTrace);
如果异步计算最新接收到的数据不为空则[hasData]
为真。
如果异步计算从未返回值,这可能是
设置为相关小部件指定的初始数据值。
最后,我们可以说快照是一种改变其状态的异步计算。
我不确定我在 Flutter 中的快照是否正确。 所以我想问问大家是否同意我对snapshot的看法。
假设我有下面的 FutureBuilder:
FutureBuilder(
future: someFutureFunction(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else
return Text(counter.toString());
}),
例如someFutureFunction()
returns Future<String>
... FutureBuilder(builder: (context, snapshot){}
中的回调中的snapshot
是否需要访问返回值( Future<String>
) someFutureFunction()
??
我只是想在脑子里保存错误信息之前先确认一下是否正确:)
谢谢
快照是与您最近的互动 API 例如,如果您刚刚发送了您的请求,直到得到答复,connectionState 处于等待状态,如果收到答复,快照中的数据将被填充....并且您提出的问题和答案是肯定的
Snapshot 是您的数据的包装器,具有一些有用的属性。它提供您的连接状态,以便您可以根据状态变化确定和更新您的视图。如果将它用于任何网络调用,您会更好地理解它。 ConnectionStates 可以是以下任何一种。
活跃
Connected to an active asynchronous computation.
For example, a Stream that has returned at least one value, but is not yet done.
完成
Connected to a terminated asynchronous computation.
none
Not currently connected to any asynchronous computation.
For example, a FutureBuilder whose FutureBuilder.future is null.
等待中
Connected to an asynchronous computation and awaiting interaction.
此外,您可能会收到在获取数据时可能遇到的任何错误。
这是 FutureBuilder 的一个更好的例子,它可以处理其他一些情况...
FutureBuilder<String>(
future: someFutureFunction(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else if (snapshot.hasData)
return Text(snapshot.data);
else if (snapshot.hasError)
return Text('Error occured!');
})
您可以从此处找到有关快照的更多信息 https://api.flutter.dev/flutter/widgets/AsyncSnapshot-class.html
快照在内部作为 AsyncSnapshot
工作,它随着指定的 [connectionState] 和可选的 [data] 或 [error] 以及可选的 [stackTrace] 而改变(但不是数据和错误)。
查看下面的代码了解更多详情:
/// Creates an [AsyncSnapshot] in [ConnectionState.none] with null data and error.
const AsyncSnapshot.nothing() : this._(ConnectionState.none, null, null, null);
/// Creates an [AsyncSnapshot] in [ConnectionState.waiting] with null data and error.
const AsyncSnapshot.waiting() : this._(ConnectionState.waiting, null, null, null);
/// Creates an [AsyncSnapshot] in the specified [state] and with the specified [data].
const AsyncSnapshot.withData(ConnectionState state, T data): this._(state, data, null, null);
/// Creates an [AsyncSnapshot] in the specified [state] with the specified [error]
/// and a [stackTrace].
///
/// If no [stackTrace] is explicitly specified, [StackTrace.empty] will be used instead.
const AsyncSnapshot.withError(
ConnectionState state,
Object error, [
StackTrace stackTrace = StackTrace.empty,
]) : this._(state, null, error, stackTrace);
如果异步计算最新接收到的数据不为空则[hasData]
为真。
如果异步计算从未返回值,这可能是
设置为相关小部件指定的初始数据值。
最后,我们可以说快照是一种改变其状态的异步计算。