watch method

  1. @override
Stream<InputLanguage?> watch({
  1. required Duration pollInterval,
})
override

Streams the keyboard language, starting with the current value where the platform can determine it. pollInterval is used by platforms that have no change notification.

Implementation

@override
Stream<InputLanguage?> watch({required Duration pollInterval}) {
  late final StreamController<InputLanguage?> controller;
  JSFunction? listener;
  controller = StreamController<InputLanguage?>(
    onListen: () {
      controller.add(_fromTag(web.window.navigator.language));
      listener = ((web.Event _) {
        controller.add(_fromTag(web.window.navigator.language));
      }).toJS;
      web.window.addEventListener('languagechange', listener);
    },
    onCancel: () {
      final registered = listener;
      if (registered != null) {
        web.window.removeEventListener('languagechange', registered);
      }
      listener = null;
    },
  );
  return controller.stream;
}