[Flutter] 全局检测是否存在一个 StatefulWidget


全局检测是否存在一个 StatefulWidget

在Flutter中,有时候我们需要判断是否已经打开了某个页面,这种需要有很多的实现方式,今天给大家介始一个比较简单的。

StateHelper

import 'package:flutter/material.dart';

class StateHelper {
  StateHelper._();

  static final _stateMap = Map<Type, int>();

  /// 判断是否存在某个页面的实例
  static bool has<T extends StatefulWidget>() {
    return _stateMap.containsKey(T);
  }
}

abstract class StateEx<T extends StatefulWidget> extends State<T> {

  @protected
  @mustCallSuper
  void initState() {
    StateHelper._stateMap[T] = DateTime.now().millisecondsSinceEpoch;
    super.initState();
  }

  @protected
  @mustCallSuper
  void dispose() {
    StateHelper._stateMap.remove(T);
    super.dispose();
  }

}

用法很简单,将要检测的基于 StatefulWidget 的页面的 State 替换成上面代码中的 StateEx 类,就可以使用下面的方法来判断了:

final isExist = StateHelper.has<XXXXPage>();
print(isExist);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM