将网页的初始化修改为 按钮添加 控制网页数量
This commit is contained in:
parent
ad9e833aba
commit
172e30b2a3
|
|
@ -24,10 +24,10 @@ class SynchronizationWebTool{
|
||||||
/// 设置控制器时 注入js
|
/// 设置控制器时 注入js
|
||||||
setChildController(List<WebviewController> childControllers){
|
setChildController(List<WebviewController> childControllers){
|
||||||
|
|
||||||
for (var controller in childControllers) {
|
// for (var controller in childControllers) {
|
||||||
controller.addScriptToExecuteOnDocumentCreated(WindowsJs.clickEventJs);
|
// controller.addScriptToExecuteOnDocumentCreated(WindowsJs.clickEventJs);
|
||||||
// controller.addScriptToExecuteOnDocumentCreated(WindowsJs.onloadZoom(90));
|
// // controller.addScriptToExecuteOnDocumentCreated(WindowsJs.onloadZoom(90));
|
||||||
}
|
// }
|
||||||
|
|
||||||
_childControllers = childControllers;
|
_childControllers = childControllers;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,27 @@ import 'package:web_synchronization_tool/windows/synchronization_web_tool.dart';
|
||||||
import 'package:webview_windows/webview_windows.dart';
|
import 'package:webview_windows/webview_windows.dart';
|
||||||
|
|
||||||
class WebGridController {
|
class WebGridController {
|
||||||
|
|
||||||
Function(WebviewController controller)? addWebControllerBlack;
|
Function(WebviewController controller)? addWebControllerBlack;
|
||||||
|
Function? addWebBlack;
|
||||||
|
Function? addAllWebBlack;
|
||||||
|
|
||||||
addWebController(WebviewController controller) {
|
addMainController(WebviewController controller) {
|
||||||
if (addWebControllerBlack != null) {
|
if (addWebControllerBlack != null) {
|
||||||
addWebControllerBlack!(controller);
|
addWebControllerBlack!(controller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addWeb() {
|
||||||
|
if (addWebBlack != null) {
|
||||||
|
addWebBlack!();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addAllWeb() {
|
||||||
|
if (addAllWebBlack != null) {
|
||||||
|
addAllWebBlack!();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class WebGridWidget extends StatefulWidget {
|
class WebGridWidget extends StatefulWidget {
|
||||||
|
|
@ -24,41 +37,56 @@ class WebGridWidget extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _WebGridWidgetState extends State<WebGridWidget> {
|
class _WebGridWidgetState extends State<WebGridWidget> {
|
||||||
|
|
||||||
List<WebviewController> controllers = [];
|
List<WebviewController> controllers = [];
|
||||||
|
|
||||||
bool initDone = false;
|
bool initDone = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
controllerInit();
|
widget.controller.addWebBlack = () {
|
||||||
|
addController();
|
||||||
|
};
|
||||||
|
|
||||||
|
widget.controller.addAllWebBlack = () {
|
||||||
|
addAllController();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 控制器初始化
|
// 提娜佳一个网页
|
||||||
Future controllerInit() async {
|
addController() async {
|
||||||
|
if (controllers.length >= 10) return;
|
||||||
|
|
||||||
for (var i = 0; i< 10 ; i++) {
|
|
||||||
var controller = WebviewController();
|
var controller = WebviewController();
|
||||||
await controller.initialize();
|
await controller.initialize();
|
||||||
controller.loadUrl('https://www.df6831.com/');
|
controller.loadUrl('https://www.df6831.com/');
|
||||||
|
|
||||||
// controller.executeScript(WindowsJs.zoom(35));
|
|
||||||
// controller.addScriptToExecuteOnDocumentCreated(WindowsJs.onloadZoom(35));
|
|
||||||
|
|
||||||
controllers.add(controller);
|
controllers.add(controller);
|
||||||
|
SynchronizationWebTool.getInstance().setChildController(controllers);
|
||||||
|
setState(() {});
|
||||||
}
|
}
|
||||||
|
|
||||||
SynchronizationWebTool.getInstance().setChildController(controllers);
|
// 将网页加满到10个
|
||||||
|
addAllController() async {
|
||||||
|
final num = 10 - controllers.length;
|
||||||
|
if (num < 1) return;
|
||||||
|
|
||||||
setState(() {
|
for (int i = 0; i < num; i++) {
|
||||||
initDone = true;
|
var controller = WebviewController();
|
||||||
});
|
await controller.initialize();
|
||||||
|
controller.loadUrl('https://www.df6831.com/');
|
||||||
|
controllers.add(controller);
|
||||||
|
}
|
||||||
|
SynchronizationWebTool.getInstance().setChildController(controllers);
|
||||||
|
setState(() {});
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GridView.builder(
|
return Stack(
|
||||||
|
children: [
|
||||||
|
GridView.builder(
|
||||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
||||||
crossAxisCount: 5, // 两列
|
crossAxisCount: 5, // 两列
|
||||||
crossAxisSpacing: 8.0, // 水平间距
|
crossAxisSpacing: 8.0, // 水平间距
|
||||||
|
|
@ -73,7 +101,6 @@ class _WebGridWidgetState extends State<WebGridWidget> {
|
||||||
overlayColor: MaterialStateProperty.resolveWith(
|
overlayColor: MaterialStateProperty.resolveWith(
|
||||||
(states) => Colors.transparent)),
|
(states) => Colors.transparent)),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
|
||||||
var controller = controllers[index];
|
var controller = controllers[index];
|
||||||
// controller.executeScript(WindowsJs.zoom(100));
|
// controller.executeScript(WindowsJs.zoom(100));
|
||||||
|
|
||||||
|
|
@ -86,26 +113,59 @@ class _WebGridWidgetState extends State<WebGridWidget> {
|
||||||
|
|
||||||
Navigator.of(context).push(PageRouteBuilder(
|
Navigator.of(context).push(PageRouteBuilder(
|
||||||
opaque: false, // 设置路由本身透明
|
opaque: false, // 设置路由本身透明
|
||||||
pageBuilder: (BuildContext context, _, __) => ShowWebWidget(controller: controller,main: index == 0,),
|
pageBuilder: (BuildContext context, _, __) =>
|
||||||
|
ShowWebWidget(
|
||||||
|
controller: controller,
|
||||||
|
main: index == 0,
|
||||||
|
allLoadUrl: (String url) {
|
||||||
|
controllers.forEach((controller) {
|
||||||
|
controller.loadUrl(url);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
));
|
));
|
||||||
|
|
||||||
},
|
},
|
||||||
child: Container(),
|
child: Container(),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
alignment: Alignment.topRight,
|
||||||
|
child: TextButton(
|
||||||
|
style: TextButton.styleFrom(padding: const EdgeInsets.all(0)),
|
||||||
|
onPressed: () {
|
||||||
|
controllers.removeAt(index);
|
||||||
|
SynchronizationWebTool.getInstance()
|
||||||
|
.setChildController(controllers);
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
color: Colors.blue[100],
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: const Icon(Icons.clear)),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
itemCount: controllers.length, // 生成20个瀑布流瓦片
|
itemCount: controllers.length, // 生成20个瀑布流瓦片
|
||||||
|
)
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ShowWebWidget extends StatefulWidget {
|
class ShowWebWidget extends StatefulWidget {
|
||||||
const ShowWebWidget({super.key, required this.controller, this.main = false});
|
const ShowWebWidget(
|
||||||
|
{super.key,
|
||||||
|
required this.controller,
|
||||||
|
this.main = false,
|
||||||
|
required this.allLoadUrl});
|
||||||
|
|
||||||
final WebviewController controller;
|
final WebviewController controller;
|
||||||
|
|
||||||
|
final Function(String url) allLoadUrl;
|
||||||
|
|
||||||
final bool main;
|
final bool main;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -113,9 +173,9 @@ class ShowWebWidget extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ShowWebWidgetState extends State<ShowWebWidget> {
|
class _ShowWebWidgetState extends State<ShowWebWidget> {
|
||||||
|
|
||||||
/// 网址
|
/// 网址
|
||||||
TextEditingController urlController = TextEditingController();
|
TextEditingController urlController = TextEditingController();
|
||||||
|
|
||||||
/// 服务器ip
|
/// 服务器ip
|
||||||
TextEditingController ipController = TextEditingController();
|
TextEditingController ipController = TextEditingController();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ class _WindowsPageState extends State<WindowsPage> {
|
||||||
|
|
||||||
mainController.loadUrl('http://www.df6831.com/');
|
mainController.loadUrl('http://www.df6831.com/');
|
||||||
|
|
||||||
gridController.addWebController(mainController);
|
gridController.addMainController(mainController);
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
initDone = true;
|
initDone = true;
|
||||||
|
|
@ -61,13 +61,35 @@ class _WindowsPageState extends State<WindowsPage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
||||||
if (initDone == false) return Container();
|
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: WebGridWidget(
|
body: WebGridWidget(
|
||||||
controller: gridController,
|
controller: gridController,
|
||||||
),
|
),
|
||||||
|
floatingActionButton: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
FloatingActionButton(
|
||||||
|
onPressed: (){
|
||||||
|
gridController.addWeb();
|
||||||
|
},
|
||||||
|
heroTag: 1,
|
||||||
|
tooltip: '添加网页',
|
||||||
|
child: const Icon(Icons.add),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 20,)
|
||||||
|
,
|
||||||
|
FloatingActionButton(
|
||||||
|
onPressed: (){
|
||||||
|
gridController.addAllWeb();
|
||||||
|
},
|
||||||
|
heroTag: 2,
|
||||||
|
tooltip: '添加10个网页',
|
||||||
|
child: const Row(
|
||||||
|
children: [Icon(Icons.add),Text('10')],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue