zoukankan      html  css  js  c++  java
  • [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);
    
  • 相关阅读:
    挖地雷
    图的遍历
    数字三角形
    小凯的数字
    开心的金明
    ACM Training DAY 1
    ACM模板大整理
    [Java程序设计基础] Day 1 实验课 Java的环境配置与Java数组
    #寒假集训[20200113]
    #寒假集训[20200112]
  • 原文地址:https://www.cnblogs.com/yangyxd/p/14678172.html
Copyright © 2011-2022 走看看