Flutter 错误在 null 上调用了方法“[]”。接收方:null 尝试调用:[]("videoId")
Posted
技术标签:
【中文标题】Flutter 错误在 null 上调用了方法“[]”。接收方:null 尝试调用:[]("videoId")【英文标题】:Flutter error The method '[]' was called on null. Receiver: null Tried calling: []("videoId") 【发布时间】:2022-01-22 23:17:40 【问题描述】:我想为我的小组项目制作一个可以显示我的 Youtube 播放列表中的视频列表的应用。视频列表出现在模拟器上,但是当我单击(播放)视频时收到此错误。
The method '[]' was called on null.
Receiver: null
Tried calling: []("videoId")
这是我的代码
class ListVideos extends StatelessWidget
List list;
ListVideos(this.list);
@override
Widget build(BuildContext context)
return ListView.builder(
itemCount: list == null ? 0 : list.length,
itemBuilder: (context, i)
return Container(
padding: const EdgeInsets.all(10.0),
child: Column(
children: <Widget>[
GestureDetector(
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => VideoPlays(
url: "https://youtube.com/embed/$list[i]['contentDetail']['videoId']",))),
child: Container(
height: 210.0,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(list[i]['snippet']['thumbnails']['high']['url']),
fit: BoxFit.cover),),
),
),
Padding(padding: const EdgeInsets.all(10.0),),
Text(list[i]['snippet']['title'],style: TextStyle(fontSize: 18.0),),
Padding(padding: const EdgeInsets.all(10.0),),
Divider()
],
),
);
);
我不知道如何解决这个问题
【问题讨论】:
你能在创建这个对象时显示吗?list[i]['contentDetail']
是 null
对不起,我不明白你的意思。我刚刚开始学习编程,因为我的项目需要我构建一个应用程序。我从 youtube 上的教程中学会了这样做
在***上发帖之前,请阅读您使用的工具的文档。
【参考方案1】:
由于错误指示您名为contentDetail
的密钥正在获取null
值,这就是您无法获取videoId
的原因。要解决此错误,请确保您在 contentDetail
键中获得正确的值,或者如果 contentDetail
是 null
,您可以应用逻辑隐藏 Container
,如下所示
Visibility(
visible: list[i]['contentDetail'] == null ? false : true,
child: Container(
padding: const EdgeInsets.all(10.0),
child: Column(
children: <Widget>[
GestureDetector(
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => VideoPlays(
url: "https://youtube.com/embed/$list[i]['contentDetail']['videoId']",))),
child: Container(
height: 210.0,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(list[i]['snippet']['thumbnails']['high']['url']),
fit: BoxFit.cover),),
),
),
Padding(padding: const EdgeInsets.all(10.0),),
Text(list[i]['snippet']['title'],style: TextStyle(fontSize: 18.0),),
Padding(padding: const EdgeInsets.all(10.0),),
Divider()
],
),
))
【讨论】:
如果我这样做,它不会显示 youtube 视频列表 你需要检查contentDetail是否有值,如果它没有值那么它会在调用函数时抛出一个错误。 成功了,谢谢 如果它对您有用,请将其标记为已回答并投票。以上是关于Flutter 错误在 null 上调用了方法“[]”。接收方:null 尝试调用:[]("videoId")的主要内容,如果未能解决你的问题,请参考以下文章
FLutter:迭代列表时在 null 上调用了方法“[]”
Flutter:无法从 firebase 读取数据。方法 '[]' 在 null 错误上被调用
Flutter Firebase 在 null 上调用了方法“数据”