Dart & Flutter

[Flutter] FlutterError (A dismissed Dismissible widget is still part of the tree. Make sure to implement the onDismissed handler and to immediately remove the Dismissible widget from the application once that handler has fired.)

ju_young 2023. 3. 5. 01:14
728x90
FlutterError (A dismissed Dismissible widget is still part of the tree. Make sure to implement the onDismissed handler and to immediately remove the Dismissible widget from the application once that handler has fired.)

ListView, Wrap 등에 Dismissible을 사용하면서 위와 같은 에러가 발생한다면 Dismissible의 key를 unique하게 지정해주면 된다.

 

예를 들어서 다음과 같이 index를 key value에 넣어서 지정해주는 것은 안된다.

for (int index = 0; index < state.keywords.length; index++)
      Dismissible(
        key: Key("keyword_dismissible_$index"),
        ...
        )

index라는 값은 unique하지 않다. 해당 index의 widget이 삭제되더라도 다른 widget이 삭제된 index를 가질 수 있기 때문이다. 예를 들어서 [0, 1, 2, 3] 에서 index 0을 지운다면 index 1이 index 0이 되면서 [0, 1, 2] 가 된다. 즉, index 0이 지워졌다고 볼 수 없다는 것이다.

 

이러한 에러는 다음과 같이 간단하게 UniqueKey() 를 사용해주면 된다.

for (int index = 0; index < state.keywords.length; index++)
      Dismissible(
        key: UniqueKey(),
        ...
        )

 

[reference]

https://stackoverflow.com/questions/47735143/dismissing-a-dismissible-with-flutter-dart

https://stackoverflow.com/questions/55792521/how-to-fix-a-dismissed-dismissible-widget-is-still-part-of-the-tree-error-in

728x90