12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import 'package:flutter/material.dart';
- import 'package:flutter_hbb/common.dart';
- import 'package:flutter_hbb/main.dart';
- import 'package:get/get.dart';
- class RefreshWrapper extends StatefulWidget {
- final Widget Function(BuildContext context) builder;
- const RefreshWrapper({super.key, required this.builder});
- @override
- State<RefreshWrapper> createState() => RefreshWrapperState();
- static RefreshWrapperState? of(BuildContext context) {
- final state = context.findAncestorStateOfType<RefreshWrapperState>();
- if (state == null) {
- debugPrint(
- "RefreshWrapperState not exists in this context, perhaps RefreshWrapper is not exists?");
- }
- return state;
- }
- }
- class RefreshWrapperState extends State<RefreshWrapper> {
- @override
- Widget build(BuildContext context) {
- return widget.builder(context);
- }
- rebuild() {
- debugPrint("=====Global State Rebuild (win-${kWindowId ?? 'main'})=====");
- if (Get.context != null) {
- (context as Element).visitChildren(_rebuildElement);
- }
- // Synchronize the window theme of the system.
- updateSystemWindowTheme();
- setState(() {});
- }
- /// set root tree dirty to trigger global rebuild
- void _rebuildElement(Element el) {
- el.markNeedsBuild();
- el.visitChildren(_rebuildElement);
- }
- }
|