Я пытаюсь иметь выпадающее меню на экране, отображаемом этой библиотекой веб-просмотра .Проблема в том, что rect
, нарисованный этим веб-представлением, перекрывает все, как показано на рисунке ниже:
return new WebviewScaffold(
appBar: new AppBar(
backgroundColor: Colors.white,
title: new Theme(
child: new DropdownButton(
isExpanded: true,
items: <String>['Foo', 'Bar'].map((String value) {
return new DropdownMenuItem<String>(
value: value,
child: new Text(
value,
overflow: TextOverflow.ellipsis,
),
);
}).toList(),
onChanged: (_) {}),
data: new ThemeData.dark(),
),
url: new Uri.dataFromString("<h1>test</h1> <p>this is a test</p>",
mimeType: 'text/html',
parameters: {'charset': 'utf-8'}).toString(),
);
});
Затем я пошел дальшеи я сделал это:
final flutterWebviewPlugin = new FlutterWebviewPlugin();
String url = "https://www.google.com";
double _height = 100.0;
GlobalKey _keyRed = GlobalKey();
Rect rect;
@override
void initState() {
super.initState();
flutterWebviewPlugin.launch(url, rect: rect);
}
void handlepress() {
setState(() {
RenderBox renderBoxRed = _keyRed.currentContext.findRenderObject();
_height = renderBoxRed.size.height;
print("height $_height");
});
}
@override
Widget build(BuildContext context) {
final mediaQuery = MediaQuery.of(context);
rect = new Rect.fromLTWH(
0.0, _height, mediaQuery.size.width, mediaQuery.size.height);
flutterWebviewPlugin.resize(rect);
return new AppBar(
backgroundColor: Colors.white,
title: new Theme(
child: new drop.DropdownButton(
key: _keyRed,
handler: handlepress,
isExpanded: true,
items: <String>['Foo', 'Bar'].map((String value) {
return new drop.DropdownMenuItem<String>(
value: value,
child: new Text(
value,
overflow: TextOverflow.ellipsis,
),
);
}).toList(),
onChanged: (_) => handlepress()),
data: new ThemeData.dark(),
),
leading: new IconButton(
icon: new Icon(
Icons.keyboard_arrow_left,
color: Colors.black,
size: 40.0,
),
onPressed: () => Navigator.of(context).pop(),
),
elevation: 0.0,
);
}
С этим вторым кодом drop.DropdownButton
- это мой класс, который переопределяет DropDownButton
для передачи моего Обратного вызова на onTap
(щелкните заголовок раскрывающегося списка).Этот код влияет на rect
, отображаемое веб-представлением, но все еще не работает должным образом.
Я также пытался скрыть rect
, когда раскрывающееся меню расширено, а затем показать его снова, когда оноразрушилась.Но я не нашел способа обнаружить эти события.