initState method

void initState()

Implementation

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

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

  if (widget.global) {
    switch ((isRegistered, widget.lazy)) {
      case (true, _):
        _isCreator = Get.isPrepared<T>(tag: widget.tag);
        _controllerBuilder = () => Get.find<T>(tag: widget.tag);

      case (false, true):
        _controllerBuilder =
            () => (widget.create?.call(this) ?? widget.init?.call()) as T;
        _isCreator = true;
        Get.lazyPut<T>(_controllerBuilder!, tag: widget.tag);

      case (false, false):
        _controllerBuilder =
            () => (widget.create?.call(this) ?? widget.init?.call()) as T;
        _isCreator = true;
        Get.put<T>(_controllerBuilder!(), tag: widget.tag);
    }
  } else {
    // For non-global controllers, handle creation and initialization
    _controllerBuilder = switch (widget.create) {
      var createFn? => () => createFn(this) as T,
      _ => widget.init
    };
    _isCreator = true;
    _needStart = true;
  }
}