gpt4 book ai didi

webview - Flutter:webview_flutter 在同一个 webview 小部件中更新 url

转载 作者:IT王子 更新时间:2023-10-29 06:39:38 25 4
gpt4 key购买 nike

嘿,我正在尝试创建一个显示带有 bottomappbar 的 webview 的屏幕。所以你加载 webview,当点击 bottomappbar 中的一个项目时,另一个网站应该加载到同一个 webview 中......

除了我最初解析的网站,我不知道如何打开另一个网站。我尝试使用 «setState» 更新 url,但它只更新了应用栏标题,而 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 将重新加载,但不幸的是他没有展示如何去做

谁能帮帮我?

提前致谢杜比

最佳答案

所以我遇到了类似的情况,除了当我从下拉菜单中选择一个项目时我想在我的 webview 中加载一个新的 url。我是如何做到的是创建一个 WebViewController 的实例

WebViewController controller;

然后在使用onWebViewCreated参数创建webview的时候设置这个controller

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

现在你已经设置好了 Controller ,你可以在setState()中使用它的loadUrl方法来改变显示的Url

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

我刚开始使用 Flutter,所以当然可能是更好的方法,但这对我有用

关于webview - Flutter:webview_flutter 在同一个 webview 小部件中更新 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55246081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com