import 'package:flutter/material.dart'; import 'package:web_synchronization_tool/windows/windowsJs.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 createState() => _WindowsPageState(); } class _WindowsPageState extends State { 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; }); // controller.setUserAgent('Mobile'); /// 通道消息 mainController.webMessage.listen((event) { print('mainController listen -- $event'); controller.executeScript(WindowsJs.clickJs(event['x'], event['y'])); }); /// 通道消息 controller.webMessage.listen((event) { // print('controller listen -- $event'); }); } /// 注入点击监听 addClickEventJS() { mainController.addScriptToExecuteOnDocumentCreated(WindowsJs.clickEventJs); controller.addScriptToExecuteOnDocumentCreated(WindowsJs.clickEventJs); } @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: () { mainController.executeScript(WindowsJs.clickJs(200, 900)); // controller.executeScript(WindowsJs.clickJs(600, 100)); }, child: const Text('模拟点击测试')), TextButton( onPressed: () { mainController.executeScript(WindowsJs.inputJsString(45)); controller.executeScript(WindowsJs.inputJsString(45)); }, child: const Text('模拟输入测试')), TextButton( onPressed: () { mainController.loadUrl('http://www.df6831.com/'); }, child: const Text('跳转首页')), TextButton( onPressed: () { mainController.executeScript(WindowsJs.zoom(70)); controller.executeScript(WindowsJs.zoom(40)); }, child: const Text('缩放')), TextButton( onPressed: () { mainController.openDevTools(); }, child: const Text('开发者')), TextButton( onPressed: () { mainController.clearCookies(); mainController.clearCache(); }, child: const Text('清除缓存')), ], ), ), // pageViewWidget() Expanded(child: pageViewWidget()), ], ), ); } Widget pageViewWidget() { return Row( children: [ SizedBox( width: 1000, height: 1000, child: WindowsWebWidget( controller: mainController, ), ), SizedBox( width: 500, height:400, 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 with AutomaticKeepAliveClientMixin { @override bool get wantKeepAlive => true; @override Widget build(BuildContext context) { super.build(context); return widget.child; } }