initState method

  1. @override
void initState()
override

Initialises the TBaseViewModel and its needed methods.

Implementation

@override
void initState() {
  _viewModel = widget._viewModelBuilder()
    ..disposableBuildContext = DisposableBuildContext(this)
    .._mounted = (() => mounted)
    ..arguments = widget._argumentBuilder?.call();
  final minBusyDuration = widget.minBusyDuration;
  final showLoadingIndicator = minBusyDuration != null;
  if (showLoadingIndicator) {
    final busyService = TBusyService.instance();
    busyService.setBusy(
      true,
      minBusyDuration: minBusyDuration,
    );
    _busyListener = () {
      if (!busyService.isBusy) {
        busyService.isBusyListenable.removeListener(_busyListener!);
        _busyListener = null;
        Future.delayed(widget.contentFadeDuration, () {
          _viewModel.setInitialised(true);
        });
      }
    };
    busyService.isBusyListenable.addListener(_busyListener!);
  }
  WidgetsBinding.instance.addPostFrameCallback((_) async {
    await _viewModel.initialise(doSetInitialised: !showLoadingIndicator);
    if (showLoadingIndicator) {
      TBusyService.instance().setBusy(false);
    }
  });
  super.initState();
}