인강을 들으면서 서버에서 어떻게 데이터를 받는지 배웠고, 특정 조건에서 데이터를 추가로 불러와서 rerendering시키는 숙제가 있어 진행했다.
우선 특정 조건에서 getMore()함수를 이용해 데이터를 불러오고 그 result.body를 contentData에 넣어줬어야 했다. 따라서 위 사진과 같이 코딩을 했는데 Expected a value of type 'int', but got one of type 'String' 이라는 오류가 떴다.
우선 print를 하여 result가 잘못 왔는지 확인했다.
정상적으로 json데이터가 온 것을 확인하고, 찾아보기 전에 그냥 있는 그대로 해석해서 int형이 필요한데 string형이 왔다고 했으니 그냥 result.body에서 int형으로 필요한 id, likes에 다시 int처리를 해봤다. 단순무식한 방법이었고 안될 줄 알았으나 정말 안됐다.
뭐가 있을까 구글링하니 첫 글로
https://stackoverflow.com/questions/63039837/how-to-solve-expected-a-value-of-type-int-but-got-one-of-type-string-in-f
이 글이 나왔는데 다 읽다보니 정말 중요한 처리 하나를 놓쳤다는 걸 알게됐다.
jsonDecode 처리였다. json데이터는 받으면 Dart Object형태로 바꿔줘야해서 decode가 필요한데 처음에 데이터 요청할 때는 처리를 해놓고, getMore로 추가 데이터를 받을 때는 처리를 하지 않았던 것이다.
그래서 decode처리를 해주니 해당 오류는 없어졌고 리렌더링도 잘 됐다.
이번에 알게된 점은 flutter는 정확한 오류를 알려주지 않는다는 점이었다. 이런 단점이 있다는 걸 몰랐고, 오류 내용을 그대로 믿는 경우 엄청나게 시간이 소비될 수 있다는 걸 알게됐다. 앞으로는 flutter오류대로 처리했는데 정말 모르겠다면 다른 부분도 의심해봐야겠다.