我是flutter的初学者,我想在flutter应用程序中隐藏网站的一部分。我在pubspec.yaml
文件中添加了flutter flutter_webview_plugin
,并将包导入到我的feed.dart页面中。flutterWebviewPlugin.evalJavascript("alert('Hi, I just executed')");
是在我运行应用程序时执行的。但是flutterWebviewPlugin.evalJavascript("document.getElementById('header04-2j').style.display = 'none';");
我试着隐藏头部,但是它不起作用。Bellow是源代码..请帮帮忙。
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")),
);
}
}
发布于 2020-10-20 20:23:22
这可能是因为您的网页没有加载,因此元素不存在,在您的代码中调用该方法时。
一种解决方案是等待页面加载,然后再尝试使用onStateChanged
流删除元素。
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();
}
https://stackoverflow.com/questions/63147034
复制相似问题