Flutter 视频列表不';不能正常显示
您好,我正在尝试显示Firebase的视频列表。如果云存储,则存储URL。唯一的问题是,当我想显示例如5个不同的视频时,有5个视频,但都是相同的。这意味着有一个,但显示了5次 在我看来,这可能是控制器的问题,但老实说,我不知道如何解决它。我甚至创建了一个控制器列表,但却堆积在那里 提前非常感谢,这里有一个代码:Flutter 视频列表不';不能正常显示,flutter,dart,Flutter,Dart,您好,我正在尝试显示Firebase的视频列表。如果云存储,则存储URL。唯一的问题是,当我想显示例如5个不同的视频时,有5个视频,但都是相同的。这意味着有一个,但显示了5次 在我看来,这可能是控制器的问题,但老实说,我不知道如何解决它。我甚至创建了一个控制器列表,但却堆积在那里 提前非常感谢,这里有一个代码: class StreamB extends StatefulWidget { @override _StreamBState createState() => _Strea
class StreamB extends StatefulWidget {
@override
_StreamBState createState() => _StreamBState();
}
List<String> listOfControllers = [];
List<Widget> listOfVids = [];
class _StreamBState extends State<StreamB> {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: FirebaseFirestore.instance.collection('videos').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return Center(child: CircularProgressIndicator());
for (int i = 0; i < snapshot.data.documents.length; i++) {
listOfControllers.add(snapshot.data.documents[i]['url']);
listOfVids.add(VideoPost(listOfControllers[i]));
}
return VideoList();
},
);
}
}
class VideoList extends StatefulWidget {
@override
_VideoListState createState() => _VideoListState();
}
class _VideoListState extends State<VideoList> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(children: listOfVids),
);
}
}
class VideoPost extends StatefulWidget {
final String source;
VideoPost(this.source);
@override
_VideoPostState createState() => _VideoPostState();
}
class _VideoPostState extends State<VideoPost> {
VideoPlayerController _controller;
Future<void> _initializeVideoPlayerFuture;
@override
void initState() {
_controller = VideoPlayerController.network(
widget.source,
);
_initializeVideoPlayerFuture = _controller.initialize();
super.initState();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(top: 20),
child: GestureDetector(
onDoubleTap: () => setState(() {
if (_controller.value.isPlaying) {
_controller.pause();
} else {
_controller.play();
}
}),
child: FutureBuilder(
future: _initializeVideoPlayerFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
);
} else {
return Center(child: CircularProgressIndicator());
}
},
),
),
);
}
}
类StreamB扩展StatefulWidget{
@凌驾
_StreamBState createState()=>\u StreamBState();
}
控制器列表=[];
视频列表=[];
类_StreamBState扩展状态{
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:FirebaseFirestore.instance.collection('videos').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)
返回中心(子项:CircularProgressIndicator());
对于(int i=0;i\u VideoListState();
}
类\u VideoListState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:ListView(子项:listOfVids),
);
}
}
类VideoPost扩展了StatefulWidget{
最终字符串源;
VideoPost(本资料来源);
@凌驾
_VideoPostState createState()=>\u VideoPostState();
}
类\u VideoPostState扩展了状态{
视频播放控制器\u控制器;
未来(Future)初始设定未来玩家;;
@凌驾
void initState(){
_控制器=VideoPlayerController.network(
widget.source,
);
_initializeVideoPlayerFuture=_controller.initialize();
super.initState();
}
@凌驾
无效处置(){
_controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回填充(
填充:仅限常量边集(顶部:20),
儿童:手势检测器(
onDoubleTap:()=>设置状态(){
if(_controller.value.isPlaying){
_controller.pause();
}否则{
_controller.play();
}
}),
孩子:未来建设者(
未来:_initializevideoplayer未来,
生成器:(上下文,快照){
if(snapshot.connectionState==connectionState.done){
返回AspectRatio(
aspectRatio:_controller.value.aspectRatio,
子项:视频播放器(_控制器),
);
}否则{
返回中心(子项:CircularProgressIndicator());
}
},
),
),
);
}
}