addObserver method

  1. @override
void addObserver(
  1. PowerSettingObserver observer
)
override

Registers the given object as a power setting observer. Power setting observers are notified when various power setting events occur.

See also:

Implementation

@override
void addObserver(PowerSettingObserver observer) {
  _observers.add(observer);
  if (_registeredEvents.isEmpty) {
    _subscription ??= eventChannel.receiveBroadcastStream().listen((event) {
      if (event is Map) {
        String guid = event['guid'] as String;
        int status = event['status'] as int;
        PowerSetting powerSetting = PowerSetting.fromGUID(guid);
        for (var observer in _observers) {
          switch (powerSetting) {
            case PowerSetting.GUID_CONSOLE_DISPLAY_STATE:
              observer.didChangeConsoleDisplayState(
                  ConsoleDisplayState.fromStatus(status));
              break;
            case PowerSetting.GUID_SESSION_DISPLAY_STATUS:
              observer.didChangeSessionDisplayState(
                  SessionDisplayState.fromStatus(status));
              break;
            case PowerSetting.GUID_SESSION_USER_PRESENCE:
              observer.didChangeSessionUserState(
                  SessionUserState.fromStatus(status));
              break;
          }
        }
      }
    });
    _register();
  }
}