파파비의 블로그

플러터, flutter) Fetching Data, init & of(context) 본문

개발/flutter

플러터, flutter) Fetching Data, init & of(context)

N. Dave 2020. 6. 11. 08:56
반응형

1. Fetching Data

데이터를 어딘가에서 가져오는 것, 그것은 데이터를 올리는 것 보다 쉽다.

왜냐면 데이터를 첨부할 필요가 없기 때문이다.

여기를 살펴보면, 주의해야할 점은 2가지로 압축된다.

 

1. async, await을 잘 쓰자. 그리고 얘네들은 try-catch로 무조건 에러 처리를 습관화하자.

 

2. get은 url만 넣으면 된다.

 

2. Init & of(context)

위에 저 메소드는 시작할 때 data를 끌고와서 화면을 구성하게 된다.

그럼 언제 실행하는게 좋을까? 당연히 init이 그 역할에 부응한다고 보이지 않는가?

그런데 Provider를 통해 활용하다보니, 우리는 of(context)를 init에 사용하게 된다.

 

그런데, init이 실행될 때는 context가 완전히 형성된 시기가 아니라서, of(context)를 init에서 쓰면

에러를 발생시킨다.

 

그럼 어떻게 해결할 수 있을까?

해결방법은 2가지이다.

 

1. Future.delayed(duration).then을 활용하여 init에서 실행시키기

그냥 일단 실행시켜놓고, initState의 다른 코드들이 다 실행된 뒤에 그 직후 실행시키도록 설계하는 방법이다.

init이 끝나면 context가 완료되기에 그 직후를 노리는 방법이다.

 

위 코드는 실제로 Duration은 즉시 실행되지만 의미가 없고, then 부분을 메모리에 옮겨 나머지 init부분들이 실행된 뒤에 실행하라는 의미를 갖는다.

 

다만 여기서는 에러가 날 텐데 그 이유는 listen:false를 설정안했기 때문이다.

initstate에서는 listen:false를 설정해주어야만 한다.

 

2. didChangeDependenices() 활용하기

이 방법은 init이 완전히 끝난 후 이 메소드가 실행되는 것을 이용한다. 그리고 이게 완료되면 build가 실행되기 된다.

그래서 그 사이를 활용하기에 적합한 메소드다.

 

다만 얘는 build가 실행된 직후마다 매번 실행되기 때문에, flag를 통해 한번만 실행될 수 있도록 하는게 중요하다.

 

반응형
Comments