Обзор нового класса AppLifecycleListener, представленного во Flutter v3.13
Flutter 3.13 представил множество новых функций и улучшений. Одним из них является новый класс под названием AppLifecycleListener
, который позволяет вам прослушивать события жизненного цикла вашего приложения Flutter. Это улучшение по сравнению с предыдущим способом прослушивания событий жизненного цикла приложения. В этой статье я сравню старые и новые способы прослушивания событий жизненного цикла приложения и покажу, как использовать новый класс AppLifecycleListener
.
Примечание. Я переместил этот блог на свой личный сайт. Для более удобного чтения, получения свежих статей, интерактивных примеров кода и дополнительного контента БЕСПЛАТНО посетите kazlauskas.dev.
По старому
До Flutter 3.13 вы могли прослушивать события жизненного цикла приложения с помощью миксина WidgetsBindingObserver
. Для этого вам пришлось добавить миксин WidgetsBindingObserver
в ваш класс State
и переопределить метод didChangeAppLifecycleState
. В методе didChangeAppLifecycleState
вы можете прослушивать события жизненного цикла приложения, используя предоставленное значение состояния (AppLifecycleState
).
class AppLifecyclePageOld extends StatefulWidget { const AppLifecyclePageOld({super.key}); @override State<AppLifecyclePageOld> createState() => _AppLifecyclePageOldState(); } class _AppLifecyclePageOldState extends State<AppLifecyclePageOld> // Use the WidgetsBindingObserver mixin with WidgetsBindingObserver { @override void initState() { super.initState(); // Register your State class as a binding observer WidgetsBinding.instance.addObserver(this); } @override void dispose() { // Unregister your State class as a binding observer WidgetsBinding.instance.removeObserver(this); super.dispose(); } // Override the didChangeAppLifecycleState method and // listen to the app lifecycle state changes @override void didChangeAppLifecycleState(AppLifecycleState state) { super.didChangeAppLifecycleState(state); switch (state) { case AppLifecycleState.detached: _onDetached(); case AppLifecycleState.resumed: _onResumed(); case AppLifecycleState.inactive: _onInactive(); case…