initState method

void initState()

Implementation

void initState() {
  widget.initState?.call(this);

  final isRegistered = GS.isRegistered<T>(tag: widget.tag);

  if (widget.global) {
    if (isRegistered) {
      if (GS.isPrepared<T>(tag: widget.tag)) {
        _isCreator = true;
      } else {
        _isCreator = false;
      }

      _controllerBuilder = () => GS.find<T>(tag: widget.tag);
    } else {
      if (widget.create != null || widget.init != null) {
        _controllerBuilder =
            () => widget.create?.call(this) ?? widget.init!();
        _isCreator = true;
        if (widget.lazy) {
          GS.lazyPut<T>(_controllerBuilder!, tag: widget.tag);
        } else {
          GS.put<T>(_controllerBuilder!(), tag: widget.tag);
        }
      }
    }
  } else {
    if (widget.create != null) {
      _controllerBuilder = () => widget.create!.call(this);
      GS.spawn<T>(_controllerBuilder!, tag: widget.tag, permanent: false);
    } else {
      _controllerBuilder = widget.init;
    }
    _controllerBuilder =
        (widget.create != null ? () => widget.create!.call(this) : null) ??
            widget.init;
    _isCreator = true;
    _needStart = true;
  }
}