addObserver method
Registers the given object as a power setting observer. Power setting observers are notified when various power setting events occur.
See also:
- removeObserver, to release the resources reserved by this method.
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();
}
}