Как определить, что приложение было вновь открыто после изменения настроек? - PullRequest
0 голосов
/ 14 января 2019

Я использую простой плагин разрешений для запроса разрешений контактов в моем приложении флаттера.

Когда пользователь нажимает на опцию «Больше не спрашивать» и отказывает в разрешении, я даю кнопку, которая открывает настройки с помощью openSettings (). Теперь, если пользователь активирует разрешения и нажимает, чтобы вернуться в приложение, как я могу определить, что разрешение было предоставлено?

Вот код, чтобы дать идею -

Text(
  'Permission to access Contacts was denied.\nPlease press Settings to provide permissions and continue connecting!',
),
MaterialButton(
  onPressed: () {
    SimplePermissions.openSettings();
  },
  child: Text('Settings'),
)

1 Ответ

0 голосов
/ 14 января 2019

Вы можете использовать WidgetsBindingObserver class . Позволяет определить жизненный цикл виджета. Расширьте ваше текущее состояние with WidgetsBindingObserver и добавьте эти строки в initState.

WidgetsBinding.instance.addObserver(this); //this sets WidgetsBindingObserver
requestPermission(); //this will request the permission on initial load.

Добавьте следующие строки в ваш штат.

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  checkPermission(); //this will check the status of permission when the user returns back from the settings page.
}


checkPermission() async {
  bool res = await SimplePermissions.checkPermission(Permission.Camera);
  if (!res) {
    setState(() {
      _statusMessage = "waiting for camera permission";
    });
  } else {
    setState(() {
      _statusMessage = "camera permission has been granted";
    });
  }
}

Проверьте полный пример кода здесь .

...