Doo*_*ave 10 state webview flutter
嘿,我正在尝试创建一个屏幕,该屏幕显示带有底部应用栏的 web 视图。所以你加载了 webview,当点击底部应用栏中的一个项目时,另一个网站应该加载到同一个 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,
),
),
],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我从 YouTube 上的教程中获取了代码,创建者还表示,如果 url 的状态发生变化,webview 将重新加载,但不幸的是,他没有展示如何操作
如果有人可以帮助我吗?
在此先感谢 Doobie
小智 24
所以我遇到了类似的情况,除了当我从下拉菜单中选择一个项目时,我想要一个新的 url 加载到我的 webview 中。我是如何做到这一点的,即创建一个 WebViewController 实例
WebViewController controller;
Run Code Online (Sandbox Code Playgroud)
然后在使用 onWebViewCreated 参数创建 webview 时设置此控制器
child: WebView(
key: _key,
javascriptMode: JavascriptMode.unrestricted,
initialUrl: url,
onWebViewCreated: (WebViewController webViewController) {
controller = webViewController;}
Run Code Online (Sandbox Code Playgroud)
现在你已经设置好了控制器,你可以在 setState() 中使用它的 loadUrl 方法来改变显示的 Url
setState(() {
controller.loadUrl(newUrl_here);
Run Code Online (Sandbox Code Playgroud)
我刚开始使用 Flutter,所以当然可能是更好的方法,但这对我有用
| 归档时间: |
|
| 查看次数: |
8471 次 |
| 最近记录: |