首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Flutter中隐藏webview中的页眉和页脚?

如何在Flutter中隐藏webview中的页眉和页脚?
EN

Stack Overflow用户
提问于 2020-07-29 13:46:59
回答 1查看 1.7K关注 0票数 2

我是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是源代码..请帮帮忙。

代码语言:javascript
运行
复制
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")),
    );
  }
}

enter image description here

EN

回答 1

Stack Overflow用户

发布于 2020-10-20 20:23:22

这可能是因为您的网页没有加载,因此元素不存在,在您的代码中调用该方法时。

一种解决方案是等待页面加载,然后再尝试使用onStateChanged流删除元素。

代码语言:javascript
运行
复制
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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63147034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档