Встроенный виджет видео Youtube исчезает, когда веб-страница (созданная Flutter for Web) прокручивается вверх или вниз - PullRequest
3 голосов
/ 24 января 2020

Мне удалось разместить встроенное видео Youtube на веб-странице, созданной с помощью Flutter for Web. Проблема заключается в том, что этот виджет видео исчезает при прокрутке страницы вверх или вниз и появляется снова, когда прокрутка прекращается. Консоль разработчика Chrome показывает эту ошибку remote.js:34 GET chrome-extension://invalid/ net::ERR_FAILED Firefox не выдает никаких сообщений об ошибках, но мерцание видео Youtube также происходит там. Похоже, что веб-страница постоянно извлекает информацию о видео с YouTube снова и снова во время прокрутки. Как мне это исправить?

import 'package:flutter/material.dart';
import 'dart:html' as html;
import 'dart:ui' as ui;

void main() {
// ignore: undefined_prefixed_name
  ui.platformViewRegistry.registerViewFactory(
      'video',
      (int viewId) => html.IFrameElement()
        ..width = '640'
        ..height = '360'
        ..src = 'https://www.youtube-nocookie.com/embed/IyFZznAk69U'
        ..style.border = 'none');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
        builder: (BuildContext context, BoxConstraints viewportConstraints) {
      return SingleChildScrollView(
        child: ConstrainedBox(
          constraints: BoxConstraints(
            minHeight: viewportConstraints.maxHeight,
          ),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            mainAxisAlignment: MainAxisAlignment.start,
            children: <Widget>[
              Container(
                color: Colors.purple,
                child: Center(
                  child: Container(
                    height: 360,
                    width: 640,
                    color: Colors.green,
                    child: HtmlElementView(viewType: "video"),
                  ),
                ),
              ),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
              Text("test", textDirection: TextDirection.ltr),
            ],
          ),
        ),
      );
    });
}
}

Video Thumbnail Disappears While Page Scrolling Thumbnail reappears after scrolling

1 Ответ

2 голосов
/ 01 февраля 2020

Я считаю, что это известная проблема для Flutter, так как представление перестраивается, он перестраивает и веб-страницу. Нечетное.

Если вы посмотрите на flutter_webview_plugin , автор пишет:

Предупреждение: веб-представление не интегрировано в дерево виджетов, оно является собственным представлением на верхняя часть флаттера. Вы не сможете видеть снэк-бары, диалоговые окна или другие виджеты, которые могут перекрываться с областью экрана, занятой веб-просмотром.

Если вы можете найти способ получить веб-просмотр OUT из дерева виджетов, держу пари, что оно работает без обновления, хотя, конечно, оно будет отображаться поверх всего остального.

Дайте мне знать, если вы примете решение, потому что я в одной лодке.

...