やりたいこと
アプリがバックグラウンドから画面復帰した時などに処理を行いたい。
Swift での AppDelegate 的な。
それを flutter_hooks
と hooks_riverpod
を使っており HookConsumerWidget
で実装したい場合について。
環境
flutter_hooks: ^0.18.4
hooks_riverpod: ^1.0.3
実装
最近このアプリライフサイクルを管理する useOnAppLifecycleStateChange
が公式に追加された。非常に簡単。
class TestView extends HookConsumerWidget {
const TestView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, WidgetRef ref) {
// これ
useOnAppLifecycleStateChange((beforeState, currState) {
switch (currState) {
case AppLifecycleState.resumed:
debugPrint('LOG: バックグラウンドから復帰しました');
break;
case AppLifecycleState.inactive:
debugPrint('LOG: バックグラウンドになりました');
break;
case AppLifecycleState.paused:
debugPrint('LOG: 一時停止しました');
break;
case AppLifecycleState.detached:
debugPrint('LOG: 終了しました');
break;
}
});
return const Scaffold(
body: Center(
child: Text('test'),
),
);
}
}