我已经面对这个问题一个多月了,到目前为止我还没有找到解决方案。我搜索并使用过 ChatGPT、Google Bard、Github Copilot 等人工智能工具,但都无法提供合适的解决方案。
在使用“flutter run”构建项目时,由于使用“youtube_player_iframe”,我遇到了几个问题。
我已经解决了大部分问题,但有一个问题我还没有解决。错误如下:
lib/screens/items/youtube_videos.dart:28:13: Error: No named parameter with the name 'videoId'.
videoId:
^^^^^^^
/C:/Users/Sheko/AppData/Local/Pub/Cache/hosted/pub.dev/youtube_player_iframe-4.0.4/lib/src/controller/youtube_player_controller.dart:27:3: Context: Found this candidate, but the arguments don't match.
YoutubePlayerController({
^^^^^^^^^^^^^^^^^^^^^^^
Target kernel_snapshot failed: Exception
失败:构建已完成,但有 2 次失败。
版本:
这是出现问题的“youtube_videos.dart”文件。
import 'package:flutter/material.dart';
import 'package:youtube_player_iframe/youtube_player_iframe.dart';
import 'package:be_app_mobile/models/side_item.dart';
import 'package:be_app_mobile/models/general.dart';
import 'package:be_app_mobile/helpers/font_helper.dart';
class YouTubeVideos extends StatefulWidget {
const YouTubeVideos({Key? key, required this.item, required this.general})
: super(key: key);
final SideItem item;
final General general;
@override
State<YouTubeVideos> createState() => _YouTubeVideosState();
}
class _YouTubeVideosState extends State<YouTubeVideos> {
double size = 0.0;
late List<YoutubePlayerController> _controllers;
@override
void initState() {
super.initState();
_controllers = widget.item.youtubeVideos
.map<YoutubePlayerController>(
(video) => YoutubePlayerController(
videoId:
YoutubePlayerController.convertUrlToId(video.videoUrl) ?? '',
params: YoutubePlayerParams(
showControls: !video.hideControls,
showFullscreenButton: true,
loop: video.isLive,
),
),
)
.toList();
}
@override
void dispose() {
for (var controller in _controllers) {
controller.close();
}
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: widget.general.getApplicationColor(),
body: Stack(
children: [
ListView.separated(
itemBuilder: (context, index) {
return Column(
children: [
YoutubePlayer(
controller: _controllers[index],
aspectRatio: 16 / 9,
),
Stack(
children: [
Container(
color: Colors.black,
height: 80,
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: Text(
widget.item.youtubeVideos[index].videoTitle,
overflow: TextOverflow.ellipsis,
maxLines: 2,
style: getFontStyle(16, Colors.white,
FontWeight.normal, widget.general),
),
),
],
)
],
);
},
itemCount: _controllers.length,
separatorBuilder: (context, _) {
return SizedBox(height: size);
},
),
],
),
);
}
}
我已经面对这个问题一个多月了,到目前为止我还没有找到解决方案。我搜索并使用过 ChatGPT、Google Bard、Github Copilot 等人工智能工具,但都无法提供合适的解决方案。
在使用“flutter run”构建项目时,由于使用“youtube_player_iframe”,我遇到了几个问题。
我已经解决了大部分问题,但有一个问题我还没有解决。错误如下:
lib/screens/items/youtube_videos.dart:28:13: Error: No named parameter with the name 'videoId'.
videoId:
^^^^^^^
/C:/Users/Sheko/AppData/Local/Pub/Cache/hosted/pub.dev/youtube_player_iframe-4.0.4/lib/src/controller/youtube_player_controller.dart:27:3: Context: Found this candidate, but the arguments don't match.
YoutubePlayerController({
^^^^^^^^^^^^^^^^^^^^^^^
Target kernel_snapshot failed: Exception
失败:构建已完成,但有 2 次失败。
查看文档,您可以看到 YoutubeVideoController 有一个名为 initialVideoId:
的命名参数YoutubePlayerController _controller = YoutubePlayerController(
initialVideoId: 'iLnmTe5Q2Qw', /// <------------ HERE
flags: YoutubePlayerFlags(
autoPlay: true,
mute: true,
),
);
因此,您需要使用它,因为没有像 videoId 这样的命名参数。
这也可以在项目本身内部得到证明:
YoutubePlayerController({
required this.initialVideoId,
this.flags = const YoutubePlayerFlags(),
}) : super(YoutubePlayerValue());