import 'package:flutter/material.dart'; import 'package:web_synchronization_tool/windows/show_animation_utils.dart'; import 'package:web_synchronization_tool/windows/synchronization_web_tool.dart'; import 'package:web_synchronization_tool/windows/windowsJs.dart'; import 'package:webview_windows/webview_windows.dart'; class WebGridController { Function(WebviewController controller)? addWebControllerBlack; addWebController(WebviewController controller) { if (addWebControllerBlack != null) { addWebControllerBlack!(controller); } } } class WebGridWidget extends StatefulWidget { const WebGridWidget({super.key, required this.controller}); final WebGridController controller; @override State createState() => _WebGridWidgetState(); } class _WebGridWidgetState extends State { List controllers = []; bool initDone = false; @override void initState() { super.initState(); controllerInit(); } Future controllerInit() async { for (var i = 0; i< 10 ; i++) { var controller = WebviewController(); await controller.initialize(); controller.loadUrl('http://www.df6831.com/'); // controller.executeScript(WindowsJs.zoom(35)); // controller.addScriptToExecuteOnDocumentCreated(WindowsJs.onloadZoom(35)); controllers.add(controller); } SynchronizationWebTool.getInstance().setChildController(controllers); setState(() { initDone = true; }); } @override Widget build(BuildContext context) { return GridView.builder( gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 5, // 两列 crossAxisSpacing: 8.0, // 水平间距 mainAxisSpacing: 8.0, // 垂直间距 childAspectRatio: 0.9), itemBuilder: (BuildContext context, int index) { return Stack( children: [ Webview(controllers[index]), TextButton( style: ButtonStyle( overlayColor: MaterialStateProperty.resolveWith( (states) => Colors.transparent)), onPressed: () { var controller = controllers[index]; // controller.executeScript(WindowsJs.zoom(100)); showAnimationDialog( context: context, // barrierDismissible: false, child: ShowWebWidget(controller: controller,)); }, child: Container(), ) ], ); }, itemCount: controllers.length, // 生成20个瀑布流瓦片 ); } } class ShowWebWidget extends StatelessWidget { const ShowWebWidget({super.key, required this.controller}); final WebviewController controller; @override Widget build(BuildContext context) { return Center( child: SizedBox( width: 1400, height: 900, child: Webview(controller), ), ); } }