我不知道这个错误消息是什么意思:
lib/main.dart:29:19: 错误:参数类型 'Object' 不能是 分配给参数类型“Widget?”。 “对象”来自“飞镖:核心”。 'Widget' 来自 'package:flutter/src/widgets/framework.dart' >('../../flutter/packages/flutter/lib/src/widgets/framework.dart')。 ? Image.network('https://picsum.photos/200/300') ^ 无法编译应用程序。
body: GridView.count(
// Create a grid with 2 columns. If you change the scrollDirection to
// horizontal, this produces 2 rows.
crossAxisCount: 2,
// Generate 100 widgets that display their index in the List.
children: List.generate(100, (index) {
return Center(
child: index % 2 == 0
? Image.network('https://picsum.photos/200/300')
: VideoPlayerController.network('https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4',
),
);
}),
),
您似乎正在使用 video_player 包,因此请记住 VideoPlayerController.network 返回一个控制器,而不是 Widget,这就是您收到该错误的原因。
文档在这里:https://pub.dev/packages/video_player
长话短说,您需要使用 VideoPlayer 而不是 VideoPlayerController,如下所示:
初始化控制器:
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.network(
'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4')
..initialize().then((_) {
// Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
setState(() {});
});
}
使用控制器返回一个小部件:
AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
我建议你阅读文档
我用 VideoPlayer 小部件包装了 VideoPlayerController 对象。这样就解决了上面的错误信息。不过我只能看到图片,看不到视频。
child: index % 2 == 0
? Image.network('https://picsum.photos/200/300')
: VideoPlayer(VideoPlayerController.network('https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4',
),),
);