didChangeAppLifecycleState method

  1. @override
  2. @mustCallSuper
void didChangeAppLifecycleState(
  1. AppLifecycleState state
)
inherited

Called when the system puts the app in the background or returns the app to the foreground.

Implementation

@override
@mustCallSuper
void didChangeAppLifecycleState(AppLifecycleState state) {
  /// No 'setState()' functions are allowed to fully function at this point.
  _setStateAllowed = false;

  /// First, process the State object's own event functions.
  switch (state) {
    case AppLifecycleState.inactive:
      _inactiveAppLifecycle = true;
      _didChangeAppLifecycleStateXControllers(state);
      inactiveAppLifecycleState();
      _hiddenAppLifecycle = false;
      break;
    case AppLifecycleState.hidden:
      _hiddenAppLifecycle = true;
      _didChangeAppLifecycleStateXControllers(state);
      hiddenAppLifecycleState();
      _pausedAppLifecycle = false;
      break;
    case AppLifecycleState.paused:
      _pausedAppLifecycle = true;
      _didChangeAppLifecycleStateXControllers(state);
      pausedAppLifecycleState();
      _detachedAppLifecycle = false;
      _resumedAppLifecycle = false;
      break;
    case AppLifecycleState.detached:
      _detachedAppLifecycle = true;
      _didChangeAppLifecycleStateXControllers(state);
      detachedAppLifecycleState();
      break;
    case AppLifecycleState.resumed:
      _resumedAppLifecycle = true;
      _didChangeAppLifecycleStateXControllers(state);
      resumedAppLifecycleState();
      _inactiveAppLifecycle = false;
      break;
    default:
    // WARNING: Missing case clause
  }

  _setStateAllowed = true;

  if (_setStateRequested) {
    _setStateRequested = false;
    // Only the latest State is rebuilt
    if (isLastState) {
      /// Perform a 'rebuild' if requested.
      setState(() {});
    }
  }

  // Record the triggered event
  assert(() {
    if (_printEvents) {
      //ignore: avoid_print
      print(
          '============ Event: didChangeAppLifecycleState($state) in $this');
    }
    return true;
  }());
}