Flutter - веб-просмотр с выпадающим в панели приложений - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь иметь выпадающее меню на экране, отображаемом этой библиотекой веб-просмотра .Проблема в том, что rect, нарисованный этим веб-представлением, перекрывает все, как показано на рисунке ниже:

enter image description here

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, когда раскрывающееся меню расширено, а затем показать его снова, когда оноразрушилась.Но я не нашел способа обнаружить эти события.

...