Dart & Flutter
[Flutter] FlutterError (setState() or markNeedsBuild() called during build.
ju_young
2023. 5. 12. 16:37
728x90
아래처럼 widget이 return되기 전에 조건에 따라 실행되는 함수를 넣었다.
ValueListenableBuilder<int>(
valueListenable: notifierValue,
builder: (context, value, child) {
if (value == 0) {
func();
}
return Row(
...
func 함수는 다음과 같이 Navigator.push를 포함한다.
void func() {
...
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HomeScreen();
...
}
FlutterError (setState() or markNeedsBuild() called during build. 라는 에러가 발생한 이유는 build가 진행 중인데 navigator.push를 했기 때문이다.
해결 방법은 아래와 같이 WidgetsBinding을 사용해주면 된다.
void func() {
...
WidgetsBinding.instance.addPostFrameCallback((_) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HomeScreen();
});
...
}
[reference]
728x90