본문 바로가기
카테고리 없음

TextEditingController 오류 해결

by YoonTaeseong 2019. 11. 24.

파이어베이스에서 불러온 데이터를 리펙토링 시켜서 플러터 클래스에 초기화 시킨다음 텍스트컨트롤러에다 저장을 시키려했지만 해당 오류가 계속 나왔다.

 

 

 

처음에 Provider를 상속하는 코드를 보니 해당 오류는 고칠 수 있었다. 1 -> 2로 코드를 고쳐 주었다.

1.

 

 

 

2.

 

 

고쳐 주고나니 위에있는 에러는 해결이 되었지만 다른 에러가 나왔다 바로 아래 그림이 새로 나온 에러이다.

 

 

 

에러를 보니 위젯트리가 잠겨있는데 setState와 markNeedsBuild()가 호출 되었다는 것이었다. 빌드 안에서 setState나 markNeedsBuild를 호출한적이 없는데,,

 

그래서 stateful 위젯에 있는 didChangeDependencies 를 사용하기로 했다. didChangeDependencies이 언제 호출되는지 구글에 검색을 해보니 다음과 같았다.

 

이 함수는 initState를 호출한 뒤에 실행된다. 또한 이 위젯은 데이터에 의존하는 객체가 호출될 때마다 호출됩니다. InheritedWidget 에 의존하는 경우 업데이틀 합니다.

build 는 항상 didChangeDependencies 호출 후에 실행되는 점을 명심하자. 잘 사용하지 않지만 BuildContext.inheritFromWidgetOfExactType 을 호출하기 위해서 첫단계 시작점이다. 이건 데이터를 상속받는 위젯의 변경사항을 리스닝 하게 만든다.

 

이 함수는 상속된 위젯이 업데이트를 하는 경우 당신이 네트워크 호출이라던가 그런 코스트가 많이 드는 액션을 할 때 유용하다.

 

 

해당글은 https://javaexpert.tistory.com/974를 참고하였다

[Flutter] Stateful Widget Lifecycle

Stateful Widget Lifecycle https://flutterbyexample.com/stateful-widget-lifecycle/#6-didupdatewidget 을 공부해서 요약한 글입니다. 자세한 내용은 원문확인 부탁드립니다. StatefulWidget을 만들때 State 라..

javaexpert.tistory.com

 

댓글