#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();
}