[Flutter] 앱 라이프사이클 수신 WidgetsBindingObserver

soonmuu·2023년 3월 2일
0

flutter

목록 보기
10/11
post-thumbnail

앱 라이프 사이클 수신

  • didChangeAppLifecycleState는 앱의 라이프사이클 상태가 변경될 때마다 호출된다.
    • 앱이 백그라운드로 들어가거나 전면으로 나올 때
    • 잠금 상태가 변경될 때
    • 화면이 꺼지거나 켜질 때
  1. 위젯에 with WidgetsBindingObserver 을 사용하여 만들어준다
  2. addObserverinitState에 호출해준다
  3. removeObserver를 호출하여 메모리제거시 호출해준다
  4. didChangeAppLifecycleState를 사용해 활동이 감지될때마다 원하는 함수를 실행할 수 있다

호출하는 페이지

사용 앱에 따라 다양하게 호출 될 수 있다
나는 메인페이지, 레이아웃 위젯 (서브페이지) 에서 사용했더니 너무 자주 감지되지도 적게 감지되지도 않아서 일단 두군데서 호출했다.
앱을 사용해보고 너무 자주 호출 되는 것같으면 서브페이지에서는 빼도 될 것같기도 함

사용 코드

import 'package:flutter/material.dart';


class HomePage extends StatefulWidget {
  
  _HomePageState createState() => _HomePageState();
}

// WidgetsBindingObserver 사용
class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
  
  void initState() {
    super.initState();
    WidgetsBinding.instance?.addObserver(this);
	// 최초로 실행할 코드 실행
  }

  
  void dispose() {
    WidgetsBinding.instance?.removeObserver(this);
    super.dispose();
  }

  
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    if (state == AppLifecycleState.resumed) {
      // 감지되었을때 필요한 코드 실행
    }
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Page'),
      ),
      body: Center(
        child: Text('Welcome to the home page'),
      ),
    );
  }
}
profile
프론트엔드

0개의 댓글

관련 채용 정보