回答編集履歴

2

ちょい文言調整

2020/01/10 23:23

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -1,6 +1,6 @@
1
1
  `Dismissible`の`key`に`Key(index.toString())`を指定しているのが原因だと思います。
2
2
 
3
- これだと、途中のTODOが削除された場合、別のTODOに削除したindexが使いまわされてしまい、削除した`key`存在しているのでエラーになっているようです。
3
+ これだと、途中のTODOが削除された場合、削除したindexが他のTODOで使いまわされてしまい、不整合起きるのでエラーになっているようです。
4
4
 
5
5
 
6
6
 

1

ObjectKeyを使うのがよさそうなので回答を編集

2020/01/10 23:23

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -1,9 +1,7 @@
1
- `Dismissible`の`key`に`index.toString()`を指定しているのが原因だと思います。
1
+ `Dismissible`の`key`に`Key(index.toString())`を指定しているのが原因だと思います。
2
2
 
3
3
  これだと、途中のTODOが削除された場合、別のTODOに削除したindexが使いまわされてしまい、削除した`key`が存在しているのでエラーになっているようです。
4
4
 
5
5
 
6
6
 
7
- 試しに`Dismissible`の`key`を`_todos[index].title`にしたら動きました。ただし、これだとTODOのタイトルが重複するとまずいので、各TODOユニークなキーを何か持つといいかもせん
7
+ `Dismissible`の`key`を`ObjectKey(_todos[index])`にするとTODOごとにユニークなキーになるで、エラーが発生なくなりした
8
-
9
- ※たとえば UUID など