Flutter:webview_flutter更新同一webview小部件中的url

pftdvrlh  于 2023-01-21  发布在  Flutter
关注(0)|答案(1)|浏览(174)

嘿,我正在创建一个屏幕,显示一个带有bottomappbar的webview。所以你加载webview,当点击bottomappbar中的一个项目时,另一个网站应该加载到同一个webview中...
我想不出如何打开另一个网站以外,我原来解析。我试图更新网址使用setstate,但它只更新appbar标题和webview仍然显示原来的网站
下面是我目前的代码:

class _WebviewContainer extends State<WebviewContainer> {
var url;
final key = UniqueKey();

_WebviewContainer(this.url); 

@override
Widget build(BuildContext context) {    
return Scaffold(
  appBar: AppBar(
    title: Text(url),
    actions: <Widget>[
      IconButton(
        icon: Icon(
          Icons.home,
          size: 40.0,
          color: Colors.white,
        ),
        onPressed: () => {
          //-> Here I set the new url but the webview always shows the origin website

          setState(() {
            url = 'https://stackoverflow.com/';
          })
        },
      )
    ],
  ),
  body: Column(
    children: <Widget>[
      Expanded(
        child: WebView(
          key: key,
          javascriptMode: JavascriptMode.unrestricted,
          initialUrl: url,              
        ),
      ),          
    ],
  ),
);
}
}

我从YouTube上的一个教程中获得了代码,创建者还声明如果URL的状态发生变化,WebView将重新加载,但不幸的是,他没有说明如何操作
有人能帮我吗?

t5fffqht

t5fffqht1#

所以我有一个类似的情况,除了我想在从下拉菜单中选择一个项目时在我的webview中加载一个新的url。

WebViewController controller;

然后在使用onWebViewCreated参数创建webview时设置此控制器

child: WebView(
      key: _key,
      javascriptMode: JavascriptMode.unrestricted,
      initialUrl: url,
    onWebViewCreated: (WebViewController webViewController) {
    controller = webViewController;}

现在已经设置了控制器,可以在setState()中使用它的loadUrl方法来更改显示的Url

setState(() {                
            controller.loadUrl(newUrl_here);

我刚刚开始与Flutter,所以可能是一个更好的方式,当然,但这对我的工作

相关问题