Flutter flatter youtube_player_flatter:^7.0.0+;7 http请求错误
我正在使用此Flutter flatter youtube_player_flatter:^7.0.0+;7 http请求错误,flutter,Flutter,我正在使用此软件包播放视频,但我收到此错误 HTTP request failed, statusCode: 404, https://i3.ytimg.com/vi_webp/qs8vn5rzs-0/sddefault.webp When the exception was thrown, this was the stack: #0 NetworkImage._loadAsync (package:flutter/src/painting/_network_image_io.d
软件包
播放视频,但我收到此错误
HTTP request failed, statusCode: 404, https://i3.ytimg.com/vi_webp/qs8vn5rzs-0/sddefault.webp
When the exception was thrown, this was the stack:
#0 NetworkImage._loadAsync (package:flutter/src/painting/_network_image_io.dart:99:9)
<asynchronous suspension>
Image provider: NetworkImage("https://i3.ytimg.com/vi_webp/qs8vn5rzs-0/sddefault.webp", scale: 1.0)
Image key: NetworkImage("https://i3.ytimg.com/vi_webp/qs8vn5rzs-0/sddefault.webp", scale: 1.0)
HTTP请求失败,状态代码:404,https://i3.ytimg.com/vi_webp/qs8vn5rzs-0/sddefault.webp
引发异常时,这是堆栈:
#0 NetworkImage.\u loadAsync(包:flatter/src/painting/\u network\u image\u io.dart:99:9)
图像提供程序:网络图像(“https://i3.ytimg.com/vi_webp/qs8vn5rzs-0/sddefault.webp,比例:1.0)
图像键:网络图像(“https://i3.ytimg.com/vi_webp/qs8vn5rzs-0/sddefault.webp,比例:1.0)
这是我的密码
class YouTubePage extends StatefulWidget {
@override
_YouTubePageState createState() => _YouTubePageState();
}
class _YouTubePageState extends State<YouTubePage> {
@override
void initState() {
super.initState();
getFevSub();
}
String fevSub = "music";
void getFevSub() async {
await FirebaseFirestore.instance
.collection('users')
.doc(FirebaseAuth.instance.currentUser.uid)
.get()
.then((data) {
fevSub = data.data()['favSub'];
});
videoList(fevSub);
}
@override
Widget build(BuildContext context) {
return Scrollbar(
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: <Widget>[
SizedBox(width: 30),
] +
widgetList),
),
);
}
static String key;
List<Widget> widgetList = [];
YoutubePlayerController _controller;
String videoID;
bool _isPlayerReady = false;
void videoList(fevSub) async {
key = " ";
YoutubeAPI ytApi = new YoutubeAPI(key, type: "video", maxResults: 10);
List<YT_API> ytResult = [];
ytResult = await ytApi.search(fevSub);
ytResult.forEach((video) {
String url = video.url;
videoID = YoutubePlayer.convertUrlToId(url);
_controller = YoutubePlayerController(
initialVideoId: videoID,
flags: YoutubePlayerFlags(
autoPlay: true,
),
);
try {
widgetList.add(
YoutubePlayer(
width: MediaQuery.of(context).size.width * 0.8,
actionsPadding: EdgeInsets.all(10),
liveUIColor: nave,
controller: _controller,
// showVideoProgressIndicator: true,
progressIndicatorColor: yellow,
progressColors: ProgressBarColors(
playedColor: yellow,
handleColor: nave,
),
onReady: () {
_isPlayerReady = true;
},
),
);
} catch (e) {
print(e);
}
widgetList.add(SizedBox(width: 15));
setState(() {});
});
}
}
class YouTubePage扩展StatefulWidget{
@凌驾
_YouTubePageState createState()=>\u YouTubePageState();
}
类_youtubepatate扩展状态{
@凌驾
void initState(){
super.initState();
getFevSub();
}
String fevSub=“music”;
void getFevSub()异步{
等待FirebaseFirestore.instance
.collection('用户')
.doc(FirebaseAuth.instance.currentUser.uid)
.get()
.然后((数据){
fevSub=data.data()['favSub'];
});
视频列表(fevSub);
}
@凌驾
小部件构建(构建上下文){
返回滚动条(
子:SingleChildScrollView(
滚动方向:轴水平,
孩子:排(
儿童:[
尺寸箱(宽度:30),
] +
widgetList),
),
);
}
静态字符串键;
列表widgetList=[];
YoutubePlayerController\u控制器;
字符串videoID;
bool_isPlayerReady=假;
无效视频列表(fevSub)异步{
key=“”;
YoutubeAPI ytApi=新的YoutubeAPI(键,类型:“video”,最大结果:10);
列表结果=[];
ytResult=等待ytApi.search(fevSub);
ytResult.forEach((视频){
字符串url=video.url;
videoID=youtubeplyer.convertUrlToId(url);
_控制器=YoutubePlayerController(
initialVideoId:videoID,
标志:YoutubePlayerFlags(
自动播放:对,
),
);
试一试{
widgetList.add(
YoutubePlayer(
宽度:MediaQuery.of(context).size.width*0.8,
行动铲:所有(10)个边集,
liveUIColor:中堂,
控制器:_控制器,
//showVideoProgressIndicator:对,
进度指示灯颜色:黄色,
ProgressColor:ProgressBarColor(
播放颜色:黄色,
手绘颜色:中堂,
),
onReady:(){
_isPlayerReady=true;
},
),
);
}捕获(e){
印刷品(e);
}
添加(SizedBox(宽度:15));
setState((){});
});
}
}
i我不确定此代码片段是否足以识别您的问题,你能提供更多的代码吗,还有,你是否遵循了这些文档?@Fahmisawaha我用完整的代码更新了它(我用YouTube API搜索用户fav主题的代码,并在YouTube播放器中提供),首先,你是否按照文档中的说明用androidx迁移了你的项目,第二,您不需要识别API密钥吗,我看到一根空弦@法米萨瓦哈你指的是什么?我刚从这里删除的代码不是空的吗?或teamviewer