【发布时间】:2021-11-03 11:48:55
【问题描述】:
我有一个 Futurebuilder,我在其中调用多个期货。我想获得第一个未来数据,但我找不到方法来告诉 null-safety 这不能为 null。
FutureBuilder(
future:
Future.wait([contactInformationController.companiesFuture.value]),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.active:
case ConnectionState.waiting:
return SizedBox(height: 600, child: LoadingIndicator());
case ConnectionState.done:
if (snapshot.hasError) {
return SizedBox(
width: double.infinity,
height: 600,
child: Center(
child: Text("fetcherror".tr,
style: Theme.of(context).textTheme.subtitle1!)));
}
contactInformationController.companiesData.value = snapshot.data[0]!;
...
它给了我这个错误:
方法'[]'不能被无条件调用,因为接收者 可以为“null”。
如何使这段代码在 null 安全的情况下工作:
contactInformationController.companiesData.value = snapshot.data[0]!;
【问题讨论】:
-
snapshot.data[0]!断言snapshot.data的第一个元素不为空。该错误告诉您snapshot.data本身可能为空。如果您确定不是,那么您可以使用snapshot.data![0]。 -
检查
snapshot.hasData是否为真是个好主意,然后您就可以安全地按照前面的评论所说的去做。
标签: flutter dart dart-null-safety