在颤抖的模式底部实现WebView

时间:2019-07-12 16:05:08

标签: flutter

我想实现带有Webview的模式底部工作表作为其子级。当我尝试这样做时,Webview混乱了,工作表出现在屏幕的顶部而不是底部。

我试图改变高度,但没有任何效果。

Pub dependency: flutter_webview_plugin: ^0.3.5

  void _showModelSheet() {
    showModalBottomSheet(
        context: context,
        builder: (builder) {
          return new Container(
            height: screenHeight / 4,
            child: new Container(
              decoration: new BoxDecoration(
                  color: Colors.amber,
                  borderRadius: new BorderRadius.only(
                      topLeft: const Radius.circular(20.0),
                      topRight: const Radius.circular(20.0))),
              child: Container(
                child: new MaterialApp(
                  debugShowCheckedModeBanner: false,
                  routes: {
                    "/": (_) => new WebviewScaffold(
                          url: "https://www.google.com",
                        ),
                  },
                ),
              ),
            ),
          );
        });
  }

child: RaisedButton(
                    elevation: 10,
                    splashColor: Colors.black,
                    color: Colors.red.shade900.withOpacity(0.7),
                    shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(110)),
                    onPressed: _showModelSheet,
                    child: Text(
                      "sheet"),
),
),

我想使整个Web视图都包裹在模态底板的高度中。

1 个答案:

答案 0 :(得分:0)

您将在另一个内部返回MaterialApp。原因是您使用的插件迫使您这样做。

最好使用官方Flutter WebView插件。

webview_flutter: ^0.3.9+1

然后像这样使用它:

void _showModelSheet() {
    showModalBottomSheet(
      context: context,
      builder: (builder) {
        return new Container(
          height: MediaQuery.of(context).size.height / 4,
          child: new Container(
            decoration: new BoxDecoration(color: Colors.amber, borderRadius: new BorderRadius.only(topLeft: const Radius.circular(20.0), topRight: const Radius.circular(20.0))),
            child: Container(
                child: WebView(
              initialUrl: 'https://google.com',
            )),
          ),
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          elevation: 10,
          splashColor: Colors.black,
          color: Colors.red.shade900.withOpacity(0.7),
          shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(110)),
          onPressed: _showModelSheet,
          child: Text("sheet"),
        ),
      ),
    );
  }

这是结果:

enter image description here