153 lines
3.8 KiB
Dart
153 lines
3.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'windows_web_page.dart';
|
|
import 'package:webview_windows/webview_windows.dart';
|
|
|
|
import '../JavaScriptString.dart';
|
|
|
|
class WindowsPage extends StatefulWidget {
|
|
const WindowsPage({super.key});
|
|
|
|
@override
|
|
State<WindowsPage> createState() => _WindowsPageState();
|
|
}
|
|
|
|
class _WindowsPageState extends State<WindowsPage> {
|
|
final mainController = WebviewController();
|
|
final controller = WebviewController();
|
|
|
|
bool initDone = false;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
|
|
controllerInit();
|
|
}
|
|
|
|
Future controllerInit() async {
|
|
await mainController.initialize();
|
|
await controller.initialize();
|
|
|
|
mainController.clearCache();
|
|
mainController.clearCookies();
|
|
controller.clearCache();
|
|
controller.clearCookies();
|
|
|
|
|
|
mainController.loadUrl('http://www.df6831.com/');
|
|
controller.loadUrl('http://www.df6831.com/');
|
|
|
|
addClickEventJS();
|
|
|
|
setState(() {
|
|
initDone = true;
|
|
});
|
|
}
|
|
|
|
/// 注入点击监听
|
|
addClickEventJS() {
|
|
|
|
controller.executeScript('document.documentElement.innerHTML').then((value){
|
|
print(value);
|
|
});
|
|
|
|
mainController.addScriptToExecuteOnDocumentCreated(
|
|
JavaScriptString.clickEventJSString).then((value){
|
|
print(value);
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (initDone == false) return Container();
|
|
|
|
return Scaffold(
|
|
body: Column(
|
|
children: [
|
|
Container(
|
|
height: 50,
|
|
color: Colors.white,
|
|
padding: const EdgeInsets.symmetric(horizontal: 50),
|
|
child: Row(
|
|
children: [
|
|
TextButton(
|
|
onPressed: () {
|
|
controller.executeScript(
|
|
JavaScriptString.clickJSString(600, 280)).then((value){
|
|
print(value);
|
|
});
|
|
},
|
|
child: const Text('模拟点击测试')),
|
|
TextButton(
|
|
onPressed: () {
|
|
mainController
|
|
.executeScript(JavaScriptString.inputJsString(45));
|
|
controller
|
|
.executeScript(JavaScriptString.inputJsString(45));
|
|
},
|
|
child: const Text('模拟输入测试')),
|
|
TextButton(
|
|
onPressed: () {
|
|
mainController.loadUrl('http://www.df6831.com/game/');
|
|
// controller.loadUrl('http://www.df6831.com/game/');
|
|
},
|
|
child: const Text('跳转')),
|
|
const SizedBox(
|
|
width: 50,
|
|
child: TextField(
|
|
keyboardType: TextInputType.number,
|
|
decoration: InputDecoration(prefixText: '网页数量'),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
),
|
|
// pageViewWidget()
|
|
Expanded(child: pageViewWidget()),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
Widget pageViewWidget() {
|
|
return Row(
|
|
children: [
|
|
Expanded(
|
|
child: WindowsWebWidget(
|
|
controller: mainController,
|
|
),
|
|
),
|
|
Expanded(
|
|
child: WindowsWebWidget(
|
|
controller: controller,
|
|
),
|
|
)
|
|
],
|
|
);
|
|
}
|
|
}
|
|
|
|
class KeepAlivePage extends StatefulWidget {
|
|
final Widget child;
|
|
|
|
KeepAlivePage({super.key, required this.child});
|
|
|
|
@override
|
|
_KeepAlivePageState createState() => _KeepAlivePageState();
|
|
}
|
|
|
|
class _KeepAlivePageState extends State<KeepAlivePage>
|
|
with AutomaticKeepAliveClientMixin {
|
|
@override
|
|
bool get wantKeepAlive => true;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
super.build(context);
|
|
return widget.child;
|
|
}
|
|
}
|