반응형
질문
Flutter에서는 사용자가 앱을 떠나서 다시 돌아왔을 때 위젯을 업데이트하는 방법이 있을까요? 제 앱은 시간 기반으로 작동하며, 가능한 빨리 시간을 업데이트하는 것이 도움이 될 것입니다.
답변
예를 들어 다음과 같이 라이프사이클 이벤트를 들을 수 있습니다 :
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
class LifecycleEventHandler extends WidgetsBindingObserver {
final AsyncCallback resumeCallBack;
final AsyncCallback suspendingCallBack;
LifecycleEventHandler({
this.resumeCallBack,
this.suspendingCallBack,
});
@override
Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
switch (state) {
case AppLifecycleState.resumed:
if (resumeCallBack != null) {
await resumeCallBack();
}
break;
case AppLifecycleState.inactive:
case AppLifecycleState.paused:
case AppLifecycleState.detached:
if (suspendingCallBack != null) {
await suspendingCallBack();
}
break;
}
}
}
class AppWidgetState extends State<AppWidget> {
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(
LifecycleEventHandler(resumeCallBack: () async => setState(() {
// 어떤 작업 수행
}))
);
}
...
}
반응형
댓글