keys
https://flutter.dev/docs/development/ui/widgets-intro#keys
https://www.youtube.com/watch?v=kn0EOS-ZiIc&list=PLOU2XLYxmsIJyiwUPCou_OVTpRIn_8UMd&index=5
https://api.flutter.dev/flutter/foundation/Key-class.html
ํค๋ฅผ ์ธ์ ์ฐ๋๊ฐ?
adding, removing , reordering collection of stateful widgets in same type.
์ ๋๋ก ์ดํดํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
StatefulWidget ์ด๋ผ๋ ํค๊ฐ ํ์์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
state ๋ฅผ ์ฐ์ง ์๊ณ widget์๋ง ๋ณ์๊ฐ ์์ ๋๋ ํ์์๋ค.
์ดํ์๋ state๋ฅผ ์ฌ์ฉํ๋ ์ง์ง statefulwidget๋ง ์ทจ๊ธํ๊ฒ ๋ค.
์ด๋์ ํค๋ฅผ ๋์๊น?
์ ์งํด์ผ ํ ์๋ธํธ๋ฆฌ์ ๊ฐ์ฅ ์๋จ.
(at the top of the widget subtree you need to preserve)
๊ฐ์ฅ ์ต์์์ ์๋ stateful ์์ ฏ์ด ์๋๋ค.
์๋ ์ฝ๋๋ ํจ๋ฉ์ ๋ฃ์์ ๋ ๋๋คํ๊ฒ ๊ณ์ ์์ด ๋ฐ๋๋ ์์ ์ด๋ค.
์ฌ๊ธฐ์๋ ํจ๋ฉ์ ํค๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค.
์ด๋ค ํค๋ฅผ ์ธ ๊น?
์์ ฏ ํด๋์ค(state ํด๋์ค ๋ง๊ณ ) ์ ์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ๊ทธ๊ฒ์ ๊ธฐ์ค์ผ๋ก ์ผ์ ์ ์๋ค.
- LocalKey - ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง Element ๋ผ๋ฆฌ uniqueํด์ผ ํ๋ค.
- ValueKey - ํ๋์ primitive ๋ณ์
- ObjectKey - ํ๋์ ๊ฐ์ฒด ๋ณ์
- UniqueKey - ๊ธฐ์ค์ด ๋๋ ๋ฐ์ดํฐ๊ฐ ์์ ๋
- GlobalKey - ์ ์ฒด ์ฑ —> ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์์ ฏ์ธ ๊ฒฝ์ฐ์๋ bloc, provider ๊ฐ์ ๋ค๋ฅธ ๋ฐฉ์์ ์์๋ณด๋๊ฒ ๋ซ๋ค.