Я использую flutter_webview_plugin
для загрузки URL-адреса и получения от него HTML. Проблема в том, что возвращаемый HTML каждый раз отличается, что легко показать, получив длину строки HTML. Я использую другой URL-адрес в своем приложении, но я создал новый проект только для проверки этой проблемы.
Вот код:
launchPlugin() {
plugin.launch("https://www.google.com/?client=safari", hidden: true);
plugin.onStateChanged.listen((state) {
if (state.type == WebViewState.finishLoad) {
final html =
plugin.evalJavascript("document.documentElement.outerHTML");
html.then((value) {
print("Hello");
//Breakpoint set here
});
}
});
}
Я установил точку останова в том месте, где комментарий находится в и запускал это приложение несколько раз (без изменения кода). Вот некоторые результаты отладки:
введите описание изображения здесь Что здесь происходит?
Полный main.dart
код:
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final plugin = FlutterWebviewPlugin();
launchPlugin() {
plugin.launch("https://www.google.com/?client=safari", hidden: true);
plugin.onStateChanged.listen((state) {
if (state.type == WebViewState.finishLoad) {
final html =
plugin.evalJavascript("document.documentElement.outerHTML");
html.then((value) {
print("Hello");
});
}
});
}
@override
void dispose() {
plugin.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
launchPlugin();
return Scaffold(
body: Center(
child: Text("Hello"),
),
);
}
}