json.decode
를 통하여 데이터에 저장한다.Map<String, dynamic>
이라고 지정하면 된다.
사실 여기서부터는 본인이 어떻게 로직을 구성할 것인지, 데이터를 어떻게 짤 것인지에 따라서 바꾸면 되긴 하다.
global하게 쓰이는 변수 말고 지역적으로 사용되는 변수를 선언하여 바꿔치기 할 수 있도록 지역변수를 하나 선언한다.
이때 데이터 타입은 맞춰서 잘 작성한다.
그리고 listData가 위 파란색 글자처럼 Map 타입으로 지정되어있는데 Map 타입을 Iterable하게 바꾸어주는 .entries 키워드를 통하여 for문을 돌며 categories라는 Map으로 이루어진 enum과 비스무리하게 생긴 데이터를 돌며
.firstWhere라는 메서드로 단 한 개만 찾아온다.
참고로 지역변수는 underscore(
_
) 은 필요없다.
위 코드를 잘 보면 loadITem을 한 후 addItem이 될 시 saveItem으로 http req를 보내고 다시 위젯으로 돌아와 _loadITem을 다시하고있다. 이를 최적화 하자면
최초 loadItem을 진행하고 이후 addItem은 saveItem의 pop method에 입력데이터가 있으니 거기에 싣어서 보내면 굳이 한 번 더 load할필요가 없다는 것이다.