redirect.dart 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import 'package:vitalapp/routes/nav_ids.dart';
  5. import 'package:vitalapp/routes/routes.dart';
  6. class RedirectPage extends StatefulWidget {
  7. static bool _isBusy = false;
  8. static int count = 0;
  9. static bool get isBusy => _isBusy;
  10. static set isBusy(bool val) {
  11. print("isBusy -> $val");
  12. _isBusy = val;
  13. }
  14. const RedirectPage({super.key});
  15. @override
  16. State<StatefulWidget> createState() => _RedirectPageState();
  17. }
  18. class _RedirectPageState extends State<RedirectPage> {
  19. late final String targetName;
  20. late final String? targetPatientInfo;
  21. bool isLoading = true;
  22. @override
  23. void initState() {
  24. RedirectPage.isBusy = true;
  25. RedirectPage.count++;
  26. targetName = Routes.parameters["name"]!;
  27. super.initState();
  28. WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
  29. wait();
  30. });
  31. }
  32. @override
  33. void dispose() {
  34. RedirectPage.count--;
  35. if (RedirectPage.count == 0) {
  36. RedirectPage.isBusy = false;
  37. }
  38. super.dispose();
  39. }
  40. void wait() {
  41. Future.delayed(const Duration(milliseconds: 300), () {
  42. setState(() {
  43. isLoading = false;
  44. });
  45. redirectTo();
  46. });
  47. }
  48. void redirectTo() {
  49. Future.delayed(const Duration(milliseconds: 100), () {
  50. Get.offAllNamed(targetName, id: NavIds.HOME);
  51. // Routes.parameters = {};
  52. RedirectPage.isBusy = false;
  53. });
  54. }
  55. @override
  56. Widget build(BuildContext context) {
  57. if (isLoading) {
  58. return const Center(
  59. child: SizedBox(
  60. width: 50,
  61. height: 50,
  62. child: CircularProgressIndicator(),
  63. ),
  64. );
  65. }
  66. return const SizedBox();
  67. }
  68. }