처음에 리스트를 추가하는 화면에서 정보를 입력하고 추가하면 리스트에는 정보가 추가 되었는데, 메인화면에는 바로 추가된 정보가 적용되니 않고 검색 기능을 이용하고 난 후에 추가된 정보가 보이는 문제가 있었다. 이를 해결하기 위해서 검색을 해보았다.
https://usedpaper.tistory.com/63
처음에는 위 블로그에서 찾은 것처럼 화면을 넘기고 난다음 .then을 이용해서 정보를 setState로 넘기려고 했다. 그런데 현제 내 방식에는 맞지 않은 것인지 추가된 리스트가 바로 보이지 않았다.
그래서 찾은 방법이 아래의 코드이다.
onTap: () async {
final returnAlbum = await Navigator.push(context,
MaterialPageRoute(builder: (context) => RegistPage()));
if (returnAlbum != null) {
setState(() {
album.add(returnAlbum);
});
}
},
push 함수를 끝내고 onTap 안에서 setState를 한번도 호출을 하는 방식으로 해보았다. 이렇게 했더니 코드가 정상적으로 실행이 되었다.
화면의 상태를 변화시키기 위해서는 setState()를 로드하면 된다는 것을 제대로 알게 되었다.
글을 쓰면서 위의 블로그의 방식이 될 것같아 보여서 코드를 다시 수정해보았다.
onTap: () async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RegistPage())).then((value) {
setState(() {
album.add(value);
});
});
},
returnAlbum을 없애고 then을 이용해서 앞에 push가 끝났을때 setState를 실행하고 album.add를 해주었더니 원하던 데로 되었다. 아무래도 코드를 수정하는 과정에서 문제가 있었던 모양이다. 아무래도 전에 방식은 조건문을 이용하고 setState를 따로 실행해주어야하는데 이후의 방법은 바로 뒤이어서 실행해주기 때문에 더 깔끔하면서 좋은 것 같다. 검색을 하면 then을 이용하는 방법이 나오는데 검색한 것을 적용해서 성공해내서 글을 쓰는 지금 매우 기쁘다!!
프로젝트를 할때 안되더라고 뒤늦게라도 해보는것, 그리고 성공해내는 것은 매우 값진 결과이다.
'Flutter > 캠프' 카테고리의 다른 글
24.12.02 Today Error (0) | 2024.12.02 |
---|---|
24.11.29 오늘 있었던 오류들 (1) | 2024.11.29 |
flutter(기초 팀프로젝트) : 검색 기능 (0) | 2024.11.27 |
ListView를 이용한 화면 구성 (0) | 2024.11.19 |
화면 전환 시 정보 전달 2(push-pop) (1) | 2024.11.18 |