Я хочу показать страницу аутентификации Authpage () в моем случае после возобновления приложения из минимизированного состояния, я использую WidgetsBindingObserver PrettyPrint-Override ">class _MainAppState extends State with WidgetsBindingObserver {
bool showAuthPage = false;
bool _isNativeAuthDialogOpen = false;
@override
void didChangeAppLifecycleState(AppLifecycleState state) async {
super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.inactive) {
_isNativeAuthDialogOpen = true;
} else if (state == AppLifecycleState.resumed) {
if (_isNativeAuthDialogOpen) {
_isNativeAuthDialogOpen = false;
} else {
setState(() {
showAuthPage = true;
});
}
}
}
...
...
MaterialApp(
home: showAuthPage
? AuthPage(
onAuthCompleted: () {
setState(() {
showAuthPage = false;
});
},
)
: SplashPage(),
)
проблема заключалась в том, что когда было открыто диалоговое окно встроенной аутентификации Android, приложение переходило в фоновый/свернутый режим, а когда пользователь проходил аутентификацию, оно возобновлялось.
class AuthPage extends StatefulWidget {
final VoidCallback onAuthCompleted;
const AuthPage({super.key, required this.onAuthCompleted});
.
.
.
final LocalAuthentication auth = sl();
bool authSuccess = false;
Future didAuthenticate() async {
return await auth.authenticate(localizedReason: ' ');
}
@override
void initState() {
super.initState();
didAuthenticate().then(
(authenticated) {
if (authenticated && mounted) {
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => const PasswordsPage(),
),
(route) => false,
);
setState(() {
authSuccess = true;
});
}
},
);
}
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
return Scaffold(
.
.
.
IconButton.outline(
onPressed: () {
didAuthenticate().then(
(authenticated) {
if (authenticated && mounted) {
widget.onAuthCompleted();
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => const PasswordsPage(),
),
(route) => false,
);
setState(() {
authSuccess = true;
});
}
},
);
},
),
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... mized-mode
Flutter - открыть страницу после того, как приложение перейдет в свернутый режим ⇐ Android
Форум для тех, кто программирует под Android
1737998921
Anonymous
Я хочу показать страницу аутентификации Authpage () в моем случае после возобновления приложения из минимизированного состояния, я использую WidgetsBindingObserver PrettyPrint-Override ">class _MainAppState extends State with WidgetsBindingObserver {
bool showAuthPage = false;
bool _isNativeAuthDialogOpen = false;
@override
void didChangeAppLifecycleState(AppLifecycleState state) async {
super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.inactive) {
_isNativeAuthDialogOpen = true;
} else if (state == AppLifecycleState.resumed) {
if (_isNativeAuthDialogOpen) {
_isNativeAuthDialogOpen = false;
} else {
setState(() {
showAuthPage = true;
});
}
}
}
...
...
MaterialApp(
home: showAuthPage
? AuthPage(
onAuthCompleted: () {
setState(() {
showAuthPage = false;
});
},
)
: SplashPage(),
)
проблема заключалась в том, что когда было открыто диалоговое окно встроенной аутентификации Android, приложение переходило в фоновый/свернутый режим, а когда пользователь проходил аутентификацию, оно возобновлялось.
class AuthPage extends StatefulWidget {
final VoidCallback onAuthCompleted;
const AuthPage({super.key, required this.onAuthCompleted});
.
.
.
final LocalAuthentication auth = sl();
bool authSuccess = false;
Future didAuthenticate() async {
return await auth.authenticate(localizedReason: ' ');
}
@override
void initState() {
super.initState();
didAuthenticate().then(
(authenticated) {
if (authenticated && mounted) {
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => const PasswordsPage(),
),
(route) => false,
);
setState(() {
authSuccess = true;
});
}
},
);
}
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
return Scaffold(
.
.
.
IconButton.outline(
onPressed: () {
didAuthenticate().then(
(authenticated) {
if (authenticated && mounted) {
widget.onAuthCompleted();
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => const PasswordsPage(),
),
(route) => false,
);
setState(() {
authSuccess = true;
});
}
},
);
},
),
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79391654/flutter-open-a-page-after-app-goes-into-minimized-mode[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия