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 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; }); } /// 注入点击监听 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 with AutomaticKeepAliveClientMixin { @override bool get wantKeepAlive => true; @override Widget build(BuildContext context) { super.build(context); return widget.child; } }