Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 视频列表不';不能正常显示_Flutter_Dart - Fatal编程技术网

Flutter 视频列表不';不能正常显示

Flutter 视频列表不';不能正常显示,flutter,dart,Flutter,Dart,您好,我正在尝试显示Firebase的视频列表。如果云存储,则存储URL。唯一的问题是,当我想显示例如5个不同的视频时,有5个视频,但都是相同的。这意味着有一个,但显示了5次 在我看来,这可能是控制器的问题,但老实说,我不知道如何解决它。我甚至创建了一个控制器列表,但却堆积在那里 提前非常感谢,这里有一个代码: class StreamB extends StatefulWidget { @override _StreamBState createState() => _Strea

您好,我正在尝试显示Firebase的视频列表。如果云存储,则存储URL。唯一的问题是,当我想显示例如5个不同的视频时,有5个视频,但都是相同的。这意味着有一个,但显示了5次

在我看来,这可能是控制器的问题,但老实说,我不知道如何解决它。我甚至创建了一个控制器列表,但却堆积在那里

提前非常感谢,这里有一个代码:

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());
}
},
),
),
);
}
}