Как я узнаю, что мое приложение является выходом из последних приложений устройства или нет во Flutter? - PullRequest
0 голосов
/ 31 марта 2020

Я новичок во флаттере. Я работаю над одним из моих демо-приложений Flutter. Я создал 3 экрана (Логин, Регистрация и Домой) в своем приложении. Я просто перехожу на главный экран с экрана входа в систему. Теперь я хочу проверить - мое приложение живо или закрыто? - очистив приложение от последних приложений в Android и IOS. Я проверил AppLifecycleState.detached , а также проверил метод переопределения dispose () , но они не вызываются, пока пользователь убивает приложение. Пожалуйста, помогите мне, как я узнал, что мое приложение было убито. Какой метод мне нужно использовать.

Я использовал AppLifecycleState.paused для другого процесса. Поэтому я хочу любой другой способ справиться с этим.

В нативном Android мы можем проверить это с помощью метода onDestroy () и в iOS нативном приложении мы можем проверить это с помощью applicationWillTerminate () .

Какой метод мне нужно использовать для Flutter?

Пожалуйста, помогите мне исправить это.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Я нашел одно решение, чтобы определить, уничтожено ли приложение или завершено. В трепетании у нас есть метод dispose (). В моем случае метод dispose () не вызывался при уничтожении приложения. Поэтому я только что обновил свой метод dispose (). См. Код ниже.

 @mustCallSuper
  @protected
  void dispose() {
    // TODO: implement dispose

    print('dispose called.............');
    super.dispose();
  }
0 голосов
/ 31 марта 2020

Что делать, если нам нужно знать, когда наше приложение, когда в фоновом режиме? а когда выходит на передний план? Есть ли способ обнаружить это? Ну ... твой счастливый день, как я сейчас тебе объясню. Нам нужно внести небольшое изменение в наш StatefulWidget и, в частности, в наш класс State:

class _MyScreenState расширяет State с помощью WidgetsBindingObserver. После того, как мы реализуем абстрактный класс WidgetsBindingObserver, нам нужно «наблюдать» за изменениями нашего состояния жизненного цикла приложения. , Для этого нам нужно добавить в наше initState следующее:

WidgetsBinding.instance.addObserver (this);

и эту строку в нашем распоряжении:

WidgetsBinding. instance.removeObserver (this);

Отлично! Но где вы «слышите» эти изменения? didChangeAppLifecycleState будет:

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
 super.didChangeAppLifecycleState(state);
 if (state == AppLifecycleState.paused) {
// went to Background
 }
  if (state == AppLifecycleState.resumed) {
  // came back to Foreground
  }
 }

Этот трюк оооочень полезен! Если вашему приложению нужно отображать уведомление при переходе в фоновый режим, если вам нужно сохранить данные в этот момент, если вам нужно показать всплывающее окно, когда пользователь вернется, и т. Д. c, существует очень много вариантов использования для этой логики c!

Я нашел это в этой статье, надеюсь, что он будет полезен, и это ссылка на эту ссылку

, и я нашел для него пакет флаттера ссылка

...