Flutter:包含图像和视频的 Gridview 列表抛出错误

问题描述 投票:0回答:2

我不知道这个错误消息是什么意思:

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',
              ),
            );
          }),
        ),
flutter dart gridview
2个回答
1
投票

您似乎正在使用 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),
   )

我建议你阅读文档


0
投票

我用 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',
           ),),

         );

© www.soinside.com 2019 - 2024. All rights reserved.