[Flutter] flutter background service와 shared preferences를 함께 사용할 때 발생한 문제

박재빈·2025년 2월 19일
1

1. 문제 상황

Flutter에서 flutter_background_service를 사용하여 백그라운드 작업을 수행하면서 데이터를 shared_preferences에 저장하고, UI에서 해당 데이터를 불러올 때 저장한 데이터를 불러오지 못하는 문제가 발생했다.

2. 문제 발생 원인

  • Flutter에서 UI(Main Isolate)와 백그라운드(별도 Isolate)는 독립적으로 실행된다.
  • 각 Isolate는 독립된 메모리 공간을 가지므로, 서로 SharedPreferences의 다른 인스턴스를 참조한다.
  • SharedPreferences.getInstance()는 메모리에 로드된 값을 반환하므로, 백그라운드에서 저장한 데이터가 UI에서의 SharedPreferences.getInstance()에 반영되지 않을 가능성이 있다.

3. 문제 해결

  • UI(Main Isolate)에서 데이터를 불러올 때 reload()를 호출하여 최신 값을 반영하여 데이터를 불러온다.
Future<int> getData() async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.reload();
  return prefs.getInt('data') ?? 0;
}

0개의 댓글