也得到
Try making the call condtional (using ?.) or adding a null check to the target
字符串
对于同一行:
Text("${snapshot.data[index]}")
型
如果我这样做,我只得到标题的错误消息。
我实际上已经从我的另一个项目中复制/粘贴了一个FutureBuilder,它工作得很好,但在这个项目中,我得到了这个错误。唯一的区别是,在不工作的项目中,我看到了这一点:
AsyncSnapshot<Object?>
型
and in the working加工project项目I see this:
AsyncSnapshot<dynamic>
型
如果鼠标悬停在snapshot
上
整个部分看起来像这样:
FutureBuilder(
future: http_functions.myAsyncFunction(),
builder: (context, snapshot) {
return snapshot.hasData
? Scrollbar(
controller: _scrollController,
isAlwaysShown: true,
thickness: 4,
child: ListView.builder(
physics: const AlwaysScrollableScrollPhysics(),
shrinkWrap: true,
controller: _scrollController,
itemCount: 10,
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text("${snapshot.data[index]}"),
),
);
},
),
)
: const CircularProgressIndicator();
},
)
型
而myAsyncFunction()
使用return json.decode(response.body);
返回List<dynamic>
3条答案
按热度按时间l2osamch1#
您需要定义FutureBuilder的类型参数。并snapshot.data使用
!
运算符将www.example.com强制转换为非空字符串
ruarlubt2#
在
AsyncSnapshot<Object?>
中,对象是可空的,这意味着它可以有一个值,也可以是null。现在您正在访问像snapshot.data[index]
这样的对象。这里snapshot.data
可以为null,访问null数组的索引可能会导致错误。因此,为了安全地访问您的数组,请将
snapshot.data[index]
替换为snapshot.data?[index] ?? ''
,或者如果您确定您的列表不能为空snapshot.data![index]
,则可以像这样使用nullAssert操作符。icomxhvb3#
使用
snapshot.data?.docs?[0].data()
。如果不为null,则返回值,否则返回null。