Flidter WidgetsBindingObserver на Android ведет себя иначе, чем IOS - PullRequest
0 голосов
/ 30 апреля 2020

Я использую WidgetsBindingObserver для проверки яркости платформы, она хорошо работает, когда приложение запущено и работает. Приложение может определять изменения яркости платформы пользователем. Однако, когда приложение закрывается и снова открывается. При первом запуске метод didChangePlatformBrightness () вообще не запускался для Android, но для IOS он был выполнен. Почему это так?

Ниже приведен мой код:

class _MyAppState extends State<MyApp> with WidgetsBindingObserver{

  ScaffoldDataBloc bloc;
  ScaffoldDataState state;

  var systemBrightness;

  @override
  void initState() {
    WidgetsBinding.instance.addObserver(this);
    bloc = ScaffoldDataBloc();
  }

  void dispose() {
    super.dispose();
    WidgetsBinding.instance.removeObserver(this);
  }

  @override
  void didChangePlatformBrightness() {
    super.didChangePlatformBrightness();
    final Brightness brightness = WidgetsBinding.instance.window.platformBrightness;
    //inform listeners and rebuild widget tree

    systemBrightness = brightness;
    print('didchange: ' + systemBrightness.toString());
    setState(() {});
  }

....

При Android оператор печати «didchange» не был распечатан. Для IOS это результат:

флаттер: didchange: Brightness.dark

Это ошибка?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...