Flutter Web IFrameElement исчезает при перестройке виджета - PullRequest
0 голосов
/ 26 мая 2020

Я разрабатываю пакет flutter, в котором я визуализирую математические формулы с помощью Mathjax и Katex для веб-поддержки. Я использую IFrameElement для визуализации страницы HTML из таких ресурсов, как

  ui.platformViewRegistry.registerViewFactory(
      viewId.toString(),
      (int id) => html.IFrameElement()
        ..width = MediaQuery.of(context).size.width.toString()
        ..height = MediaQuery.of(context).size.height.toString()
        ..src =
            "path/to/index.html"
        ..id = '$viewId'
        ..style.border = 'none');

, а затем вызываю javascript функция от Dart для загрузки данных в index.html.

  js.context.callMethod('initWebView', [viewId, getRawData()]);

Вот мой код функции JS.

function initWebView(id, rawData) {
    var initiated = false;
    document.querySelectorAll("flt-platform-view").forEach(function (platformView) {
            var view = platformView.shadowRoot.children[1];
            if (view.id ===  id) {
                var iframe = view.contentWindow;
                myView = iframe.document.getElementById('MyView');
                initiated = true;
                myView.appendChild(createView(JSON.parse(rawData)))              
            }
        }
    );

    if (!initiated) setTimeout(function () {
        initWebView(id, rawData)
    }, 250);

}

Все работает нормально, как и ожидалось, но когда Я пытаюсь восстановить виджет в дротике, все исчезает в сети, например, если я запускаю setState, все исчезает на странице, даже если я наведу курсор на кнопку «Назад», он сделает то же самое. В консоли нет информации. Вот Live Demo , после открытия любой опции подождите немного, чтобы загрузить его.

Полный исходный код для My Package и Упомянутого файла Dart .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...