我是颤振初学者,我想在我的颤振应用程序中隐藏网站的一部分。我添加了颤振flutter_webview_plugin
in pubspec.yaml
文件并将包导入到我的 feed.dart 页面。这flutterWebviewPlugin.evalJavascript("alert('Hi, I just executed')");
当我运行应用程序时执行。但flutterWebviewPlugin.evalJavascript("document.getElementById('header04-2j').style.display = 'none';");
我试图隐藏标题,但它不起作用。
下面是源代码..请帮助。
enter code here
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
class FeedPage extends StatefulWidget {
@override
FeedPageState createState() {
return new FeedPageState();
}
}
class FeedPageState extends State<FeedPage> {
final flutterWebviewPlugin = new FlutterWebviewPlugin();
// alternatively you can define variable as var js = "YOUR_SCRIPT"; and use it inside evalJavascript
@override
void initState(){
super.initState();
flutterWebviewPlugin.evalJavascript("alert('Hi, I just executed')"); // executed
flutterWebviewPlugin.evalJavascript("document.getElementById('header04-2j').style.display = 'none';"); // not executed
}
@override
void dispose() {
flutterWebviewPlugin.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return WebviewScaffold(
url: 'https://www.esdatech.com/',
hidden: true,
appBar: AppBar(title: Text("ESDA")),
);
}
}
在此输入图像描述
这可能是由于您的网页未加载,因此在您在代码中调用该方法时该元素不存在。
解决方案是等到页面加载后再尝试使用以下方法删除元素onStateChanged
stream.
StreamSubscription<WebViewStateChanged> _onStateChanged;
@override
void initState(){
super.initState();
flutterWebviewPlugin.evalJavascript("alert('Hi, I just executed')");
_onStateChanged =
flutterWebViewPlugin.onStateChanged.listen((WebViewStateChanged state) {
if(state.type == WebViewState.finishLoad) {
flutterWebviewPlugin.evalJavascript("document.getElementById('header04-2j').style.display = 'none';");
}
}
);
}
@override
void dispose() {
_onStateChanged.cancel();
flutterWebviewPlugin.dispose();
super.dispose();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)