프로젝트를 하던중 기존 내부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에 넣어주었다.
그랬더니 화면이 의도한대로 바뀌는대로 잘 보이게 되었다~~