reload_page.dart 1.31 KB
import 'package:appframe/config/routes.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

///
/// 用于重新加载的中间路由
/// 通知点击等场景先跳转到此页,再转发 targetUrl 到 /web,
/// 确保 GoRouter 完整重建 WebPage 并加载目标 URL。
///
class ReloadPage extends StatefulWidget {
  const ReloadPage({super.key});

  @override
  State<ReloadPage> createState() => _ReloadPageState();
}

class _ReloadPageState extends State<ReloadPage> {
  @override
  void initState() {
    super.initState();

    WidgetsBinding.instance.addPostFrameCallback((_) {
      // 界面显示完成后执行的操作
      _performPostDisplayOperations();
    });
  }

  void _performPostDisplayOperations() {
    final extra = GoRouterState.of(context).extra;
    if (extra is Map<String, dynamic> && extra['targetUrl'] != null) {
      router.go('/web', extra: extra);
    } else {
      router.go('/web');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const CircularProgressIndicator(),
            const SizedBox(height: 16),
            Text('加载中...'),
          ],
        ),
      ),
    );
  }
}