Как скрыть верхний и нижний колонтитулы в webview в Flutter.?

#flutter #flutterwebviewplugin

#flutter #dart #webview #скрыть

Вопрос:

Я новичок в flutter, я хочу скрыть раздел веб-сайта в своем приложении flutter. Я добавил flutter flutter_webview_plugin в pubspec.yaml файл и импортировал пакет в свой канал.страница 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")),
    );
  }
}

    
  

введите описание изображения здесь

Комментарии:

1. Если мой ответ помог вам, пожалуйста, примите его.

Ответ №1:

Вероятно, это связано с тем, что ваша веб-страница не загружается и, следовательно, элемент не существует в момент, когда вы вызываете этот метод в своем коде.

Решением было бы дождаться загрузки страницы, прежде чем пытаться удалить элемент с помощью 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();
}