문제의 상황

Untitled

예상되는 사용자 로직은 addMomentplaceSearchplaceCheckaddMoment 이다.

여기서 신경 써야 할 부분은 check 에서 장소를 선택하고 addMoment 로 이동하면 기존에 작성된 데이터들이 (화면에) 유지되어야 한다.

하지만 backstack 에는 ViewModel 데이터들이 유지되지만,

action 으로 이동하면 ViewModel 은 초기화된다. (데이터가 모두 날아간다)

고민한 해결 방안

  1. 작성된 모든 데이터를 3개의 fragment 에서 계속 전달되도록 한다.

    1. safeArgs 의 부담이 매우 커진다.
    2. 전달하려는 데이터들을 묶을 dataClass 가 또 필요해진다.
  2. 잠시 앱 전역에 저장한다.

    1. sharedPreferences, dataStore 를 이용해서 전역에 저장 후, 불러온다.
    2. 전달하려는 데이터들을 묶을 dataClass 가 또 필요해진다.
  3. activityViewModels 를 사용한다

    1. 생명주기를 activity 기준으로 하기에 조금 찝찝하다.
    2. home 에서 add 를 갈 땐 viewModel 의 데이터들을 초기화해주는 코드가 필요하다.

해결 방법

<aside> 🙂 navGraphViewModel 을 활용했다.

</aside>