#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;
}