[flutter] List =>RxList로 바꾸기

박망키·2022년 9월 19일
0

Flutter 야금야금 먹기

목록 보기
74/97

프로젝트를 하던중 기존 내부db에 저장된 값이 있으면 가져와서 RxList pageValue list에 넣어주고
없으면 default값을 pageValue list에 넣어서 보여주는것을 만들었는데.

처음에는 RxList로 된 pageValue가 전부 반응이 잘되다가 앱을 껐다가 다시켜서 기존 저장된값을 가져와서 재 진행하려고 하면 희안하게 유독 리스트로 값이 들어가는 pageValue[3]번째에만 값이 바뀌는게 화면에 반영되지 않았다.
왜그럴까 고민을 해보니
저장된 pageValue 값이 ['홍길동','23','180cm',['슬라임','드라마'],'남자'] 이런식으로 되어있는데 ['슬라임','드라마']이부분이 json.decode할때에 Rx타입으로 되지않아서 그런것 같았다.
그래서

 List<dynamic> sl = [].obs;
for (int i = 0; i < savedList.length; i++) {
    if (savedList[i].runtimeType == List<dynamic>) {
      sl.addAll(savedList[i] as RxList<dynamic>);
      sl.add(nl);
    } else {
      sl.add(savedList[i]);
    }
  }

as RxList 로 시도했는데 실패하고
cast<RxList>()으로도 시도했는데 실패하고

///저장된값 중 List타입 RxList로 바꾸기
  List<dynamic> sl = [].obs;
  for (int i = 0; i < savedList.length; i++) {
    if (savedList[i].runtimeType == List<dynamic>) {
      RxList nl = [].obs;
      nl.addAll(savedList[i]);
      print(nl);
      sl.add(nl);
    } else {
      sl.add(savedList[i]);
    }
  }
  pageValue.value = sl;
}

옮겨담기용 RxList nl 리스트를 하나 더 만들어서 nl 리스트에 addAll해서 sl에 add하고 sl을 pageValue.value에 넣어주었다.
그랬더니 화면이 의도한대로 바뀌는대로 잘 보이게 되었다~~

profile
무럭무럭 자라는 망키

0개의 댓글