base_page_state_seconds.dart 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import 'package:flutter/material.dart';
  2. import 'package:liftmanager/routers/fluro_navigator.dart';
  3. import 'package:liftmanager/utils/toast.dart';
  4. import 'package:liftmanager/utils/utils.dart';
  5. import 'package:liftmanager/widgets/progress_dialog.dart';
  6. import 'base_page_presenter.dart';
  7. import 'mvps.dart';
  8. abstract class BasePageState<T extends StatefulWidget, V extends BasePagePresenter,A extends BasePagePresenter> extends State<T> implements IMvpView {
  9. V presenter;
  10. A presenterA;
  11. BasePageState() {
  12. presenter = createPresenter();
  13. presenterA = createPresenterA();
  14. presenter.view = this;
  15. presenterA.view = this;
  16. }
  17. V createPresenter();
  18. A createPresenterA();
  19. @override
  20. BuildContext getContext() {
  21. return context;
  22. }
  23. @override
  24. void closeProgress() {
  25. if (mounted && _isShowDialog){
  26. _isShowDialog = false;
  27. NavigatorUtils.goBack(context);
  28. }
  29. }
  30. bool _isShowDialog = false;
  31. @override
  32. void showProgress() {
  33. /// 避免重复弹出
  34. if (mounted && !_isShowDialog){
  35. _isShowDialog = true;
  36. try{
  37. showTransparentDialog(
  38. context: context,
  39. barrierDismissible: false,
  40. builder:(_) {
  41. return WillPopScope(
  42. onWillPop: () async {
  43. // 拦截到返回键,证明dialog被手动关闭
  44. _isShowDialog = false;
  45. return Future.value(true);
  46. },
  47. child: const ProgressDialog(hintText: "正在加载..."),
  48. );
  49. }
  50. );
  51. }catch(e){
  52. /// 异常原因主要是页面没有build完成就调用Progress。
  53. print(e);
  54. }
  55. }
  56. }
  57. @override
  58. void showToast(String string) {
  59. toasts(string);
  60. }
  61. @override
  62. void didChangeDependencies() {
  63. super.didChangeDependencies();
  64. presenter?.didChangeDependencies();
  65. presenterA?.didChangeDependencies();
  66. }
  67. @override
  68. void dispose() {
  69. super.dispose();
  70. presenter?.dispose();
  71. presenterA?.dispose();
  72. }
  73. @override
  74. void deactivate() {
  75. super.deactivate();
  76. presenter?.deactivate();
  77. presenterA?.deactivate();
  78. }
  79. @override
  80. void didUpdateWidget(T oldWidget) {
  81. super.didUpdateWidget(oldWidget);
  82. didUpdateWidgets<T>(oldWidget);
  83. }
  84. @override
  85. void initState() {
  86. super.initState();
  87. presenter?.initState();
  88. presenterA?.initState();
  89. }
  90. void didUpdateWidgets<W>(W oldWidget) {
  91. presenter?.didUpdateWidgets<W>(oldWidget);
  92. presenterA?.didUpdateWidgets<W>(oldWidget);
  93. }
  94. }