[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