123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import 'package:flutter/material.dart';
- import 'package:liftmanager/routers/fluro_navigator.dart';
- import 'package:liftmanager/utils/toast.dart';
- import 'package:liftmanager/utils/utils.dart';
- import 'package:liftmanager/widgets/progress_dialog.dart';
- import 'base_page_presenter.dart';
- import 'mvps.dart';
- abstract class BasePageState<T extends StatefulWidget, V extends BasePagePresenter> extends State<T> implements IMvpView {
- V presenter;
- BasePageState() {
- presenter = createPresenter();
- presenter.view = this;
- }
- V createPresenter();
- @override
- BuildContext getContext() {
- return context;
- }
- @override
- void closeProgress() {
- if (mounted && _isShowDialog){
- _isShowDialog = false;
- NavigatorUtils.goBack(context);
- }
- }
- bool _isShowDialog = false;
- @override
- void showProgress() {
- /// 避免重复弹出
- if (mounted && !_isShowDialog){
- _isShowDialog = true;
- try{
- showTransparentDialog(
- context: context,
- barrierDismissible: false,
- builder:(_) {
- return WillPopScope(
- onWillPop: () async {
- // 拦截到返回键,证明dialog被手动关闭
- _isShowDialog = false;
- return Future.value(true);
- },
- child: const ProgressDialog(hintText: "正在加载..."),
- );
- }
- );
- }catch(e){
- /// 异常原因主要是页面没有build完成就调用Progress。
- print(e);
- }
- }
- }
- @override
- void showToast(String string) {
- toasts(string);
- }
- @override
- void didChangeDependencies() {
- super.didChangeDependencies();
- presenter?.didChangeDependencies();
- }
- @override
- void dispose() {
- super.dispose();
- presenter?.dispose();
- }
- @override
- void deactivate() {
- super.deactivate();
- presenter?.deactivate();
- }
- @override
- void didUpdateWidget(T oldWidget) {
- super.didUpdateWidget(oldWidget);
- didUpdateWidgets<T>(oldWidget);
- }
- @override
- void initState() {
- super.initState();
- presenter?.initState();
- }
- void didUpdateWidgets<W>(W oldWidget) {
- presenter?.didUpdateWidgets<W>(oldWidget);
- }
- }
|