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
'Dart & Flutter' 카테고리의 다른 글
[Flutter] This widget has been unmounted, so the State no longer has a context (and should be considered defunct). (0) | 2023.05.10 |
---|---|
[Flutter/Android] Google Play 출시 준비 (0) | 2023.05.10 |
[Flutter] _minScrollExtent Null check Error (0) | 2023.05.09 |
[Flutter] Get Text Size (0) | 2023.05.04 |
[Flutter] Repository Pattern (0) | 2023.05.04 |