Youtube_player_flutter: [バグ] YoutubePlayerIFrameのスクロールの問題(フラッターWeb)

作成日 2021年02月03日  ·  9コメント  ·  ソース: sarbagyastha/youtube_player_flutter

バグを説明する
YoutubePlayerIFrameをリストビュー内に置いた場合、ウィジェットにカーソルを合わせてスクロールしてみてください。これは機能しません。

再現するには
動作を再現する手順:

  1. Flutterアプリを作成する
  2. youtube_player_iframeパッケージを追加します
  3. リストビューを作成し、いくつかのテスト要素とYoutubePlayerIFrameウィジェットを追加します。
  4. マウスがYoutubePlayerIFrameウィジェット上にある場合、スクロールは機能しません。 すべてのジェスチャーを傍受しているように見えます。

予想される行動
ListViewは、ネイティブアプリのようにスクロール可能である必要があります。

技術的な詳細:

  • デバイス:[Flutter Web]
bug

最も参考になるコメント

このコードを追加して、コンポーネントへのWebビューがスクロールイベントを処理しようとしないようにしてください

YoutubePlayerIFrame(
      gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{},
      controller: _controller,
),

モバイルでは問題なく動作します🔥、よろしく!

全てのコメント9件

このコードを追加して、コンポーネントへのWebビューがスクロールイベントを処理しようとしないようにしてください

YoutubePlayerIFrame(
      gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{},
      controller: _controller,
),

モバイルでは問題なく動作します🔥、よろしく!

      gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{},

このソリューションはWebでは機能しません。

同じ問題があります。

私は同じ問題を抱えています、これの解決策を持つことができる人はいますか?

私は同じ問題を抱えています、これの解決策を持つことができる人はいますか?

@quangvtvp私の解決策は、パッケージyoutube_plyr_iframeに変更することでした。

私は同じ問題を抱えています、これの解決策を持つことができる人はいますか?

@quangvtvp私の解決策は、パッケージyoutube_plyr_iframeに変更することでした。

@FerBueroTrebinoもWebで機能しません。特定の構成を使用しましたか?

@ deepakrana0011スクロールバーウィジェットを追加しようとしましたか?

これが私の実装のコードです:

class YoutubePlayer extends StatefulWidget {
  final String videoID;
  YoutubePlayer(this.videoID);
  <strong i="8">@override</strong>
  _YoutubePlayerState createState() => _YoutubePlayerState();
}

class _YoutubePlayerState extends State<YoutubePlayer> {
  <strong i="9">@override</strong>
  Widget build(BuildContext context) {
    return Material(
      color: Colors.transparent,
      child: InkWell(
        onTap: () {
          _showDialog(
            context,
            widget.videoID,
          );
        },
        child: Stack(
          alignment: Alignment.center,
          children: <Widget>[
            Stack(
              children: <Widget>[
                LayoutBuilder(
                  builder: (context, constraints) {
                    if (kIsWeb && constraints.maxWidth > 800) {
                      return Container(
                        color: Colors.transparent,
                        padding: EdgeInsets.all(5),
                        width: MediaQuery.of(context).size.width / 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.circular(10.0),
                          child: new Image.network(
                            YoutubePlayerController.getThumbnail(
                                videoId: widget.videoID,
                                // todo: get thumbnail quality from list
                                quality: ThumbnailQuality.max),
                            fit: BoxFit.fill,
                          ),
                        ),
                      );
                    } else {
                      return Container(
                        color: Colors.transparent,
                        padding: EdgeInsets.all(5),
                        width: MediaQuery.of(context).size.width * 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.circular(10.0),
                          child: new Image.network(
                            YoutubePlayerController.getThumbnail(
                                videoId: widget.videoID,
                                // todo: get thumbnail quality from list
                                quality: ThumbnailQuality.max,
                                webp: false),
                            fit: BoxFit.fill,
                          ),
                        ),
                      );
                    }
                  },
                ),
              ],
            ),
            Icon(
              Icons.play_circle_filled,
              color: Colors.white,
              size: 55.0,
            ),
          ],
        ),
      ),
    );
  }

@ deepakrana0011スクロールバーウィジェットを追加しようとしましたか?

これが私の実装のコードです:

class YoutubePlayer extends StatefulWidget {
  final String videoID;
  YoutubePlayer(this.videoID);
  <strong i="9">@override</strong>
  _YoutubePlayerState createState() => _YoutubePlayerState();
}

class _YoutubePlayerState extends State<YoutubePlayer> {
  <strong i="10">@override</strong>
  Widget build(BuildContext context) {
    return Material(
      color: Colors.transparent,
      child: InkWell(
        onTap: () {
          _showDialog(
            context,
            widget.videoID,
          );
        },
        child: Stack(
          alignment: Alignment.center,
          children: <Widget>[
            Stack(
              children: <Widget>[
                LayoutBuilder(
                  builder: (context, constraints) {
                    if (kIsWeb && constraints.maxWidth > 800) {
                      return Container(
                        color: Colors.transparent,
                        padding: EdgeInsets.all(5),
                        width: MediaQuery.of(context).size.width / 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.circular(10.0),
                          child: new Image.network(
                            YoutubePlayerController.getThumbnail(
                                videoId: widget.videoID,
                                // todo: get thumbnail quality from list
                                quality: ThumbnailQuality.max),
                            fit: BoxFit.fill,
                          ),
                        ),
                      );
                    } else {
                      return Container(
                        color: Colors.transparent,
                        padding: EdgeInsets.all(5),
                        width: MediaQuery.of(context).size.width * 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.circular(10.0),
                          child: new Image.network(
                            YoutubePlayerController.getThumbnail(
                                videoId: widget.videoID,
                                // todo: get thumbnail quality from list
                                quality: ThumbnailQuality.max,
                                webp: false),
                            fit: BoxFit.fill,
                          ),
                        ),
                      );
                    }
                  },
                ),
              ],
            ),
            Icon(
              Icons.play_circle_filled,
              color: Colors.white,
              size: 55.0,
            ),
          ],
        ),
      ),
    );
  }

@FerBueroTrebinoコードに従って、YouTubeビデオを再生しているYouTubeビデオのサムネイルのみを表示しています

ここでも同じですが、どうしたらいいのかわかりません。
IvはプレーヤーをゼロからVIMEOに作成し、フラッター自体のビデオプレーヤーを使用して正常に動作しますが、YouTubeのすべてのプレーヤーには、修正方法に誰も答えられない多くの問題があります。

スクロールの問題に関するanyUpdate? または他に何かがウェブで機能しますか?
私は次のようなものを試しました
これ:StackOverflow

このページは役に立ちましたか?
0 / 5 - 0 評価