Флаттер в Интернете : Как получить высоту Iframe для размещения в SingleChildScrollView

#flutter #web

Вопрос:

Я работаю над веб-представлением на основе Iframe для настольной веб-версии моего приложения, я хочу избавиться от полосы прокрутки Iframe и использовать прокрутку флаттера (т. Е.:SingleChildScrollView), однако этот виджет ошибается, если я не дам его дочернему элементу фиксированный размер, я не вижу, как я могу оценить высоту Iframe после загрузки страницы.

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

class MyWebView extends StatefulWidget {
  @override
  MyWebViewState createState() => MyWebViewState();
}

class MyWebViewState extends State<MyWebView> with AutomaticKeepAliveClientMixin{
  html.IFrameElement _iframeElement = new html.IFrameElement();
  late HtmlElementView _element;
  String element="myelement";

  @override
  void initState() {
    super.initState();

    _iframeElement.src = 'https://github.com/flutter/flutter/issues';
    _iframeElement.style.border = 'none';
    _iframeElement.style.width = '100%';
    _iframeElement.style.height = '100%';
    _iframeElement.contentEditable='false';
    _iframeElement.id=element;

    // ignore: undefined_prefixed_name
    ui.platformViewRegistry.registerViewFactory(
        element,
            (int viewId) {
          final wrapper = html.DivElement();
          final div = html.DivElement()
            ..contentEditable = 'false'
            ..style.width = '100%'
            ..style.height = '100%'
            ..style.background='#00000011'
            ..style.position='absolute'
            ..style.left='0'
            ..style.top='0';

          wrapper.append(_iframeElement);
          wrapper.append(div); //to prevent Iframe intercepting events
          return wrapper;
        }
    );

    _element=new HtmlElementView(viewType: element);
  }

  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(child: SizedBox(height:5000/*How to get Iframe Height??*/,child: _element));
  }

  @override
  void dispose() {super.dispose();}
  @override
  bool get wantKeepAlive => true;
}