์๋ก
Flutter์์ ํค๋ณด๋๋ฅผ ๋ด๋ฆฌ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค. ๊ทธ์ค์์๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด FocusManager.instance.primaryFocus?.unfocus();์
FocusScope.of(context).unfocus();์ด ์๋ค.
์ด๋ฒ ๊ธ์์๋ ์ด ๋ ๋ฐฉ์์ ์ฐจ์ด์ ๊ณผ ๊ฐ๊ฐ์ ํน์ง์ ๋ํด ์์ธํ ์ดํด๋ณด๋ ค๊ณ ํ๋ค.
1. FocusManager.instance.primaryFocus?.unfocus();
์ด ๋ฐฉ์์ ํ์ฌ ํ์ฑํ๋ ์ ๋ ฅ ํฌ์ปค์ค๋ฅผ ์ ์ญ์ ์ผ๋ก ํด์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค. Flutter์ FocusManager๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ํฌ์ปค์ค ์ํ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ, ์ฌ๊ธฐ์ primaryFocus๋ฅผ ํตํด ํ์ฌ ํ์ฑํ๋ ํฌ์ปค์ค๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. ์ด ๊ฐ์ ์ฌ์ฉํด ํฌ์ปค์ค๋ฅผ ํด์ ํ๋ฉด ํค๋ณด๋๊ฐ ๋ด๋ ค๊ฐ๋ ์๋ฆฌ๋ค.
ํน์ง
- ์ ์ญ์ ์ผ๋ก ๋์ํ๋ค: ํน์ context์ ๊ด๊ณ์์ด ํ์ฌ ํ์ฑํ๋ ํฌ์ปค์ค๋ฅผ ํด์ ํ๋ค.
- ๊ฐ๋จํ๋ค: ์ฝ๋ ํ ์ค๋ก ์์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
์ฅ์
- ์ด๋์๋ ํธ์ถํ ์ ์๋ค. BuildContext๊ฐ ํ์ ์์ผ๋ ์ ์ญ์ ์ธ ํค๋ณด๋ ํด์ ๋์์ ๊ตฌํํ ๋ ๊ฐํธํ๋ค.
- ํ์ฌ ํฌ์ปค์ค ์ํ๋ฅผ ์ง์ ๊ฐ์ ธ์ ํด์ ํ๋ฏ๋ก ์ง๊ด์ ์ด๋ค.
๋จ์
- ํน์ ์์ ฏ ํธ๋ฆฌ ๋ด์์๋ง ๋์์ ์ ํํ๊ฑฐ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํ๊ธฐ ์ด๋ ต๋ค.
FocusManager.instance.primaryFocus?.unfocus();
2. FocusScope.of(context).unfocus();
์ด ๋ฐฉ์์ ํน์ ์์ ฏ ํธ๋ฆฌ์ ๊ด๋ จ๋ ํฌ์ปค์ค๋ฅผ ํด์ ํ ๋ ์ฌ์ฉ๋๋ค. Flutter์์๋ ํฌ์ปค์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฒ์(scope)๋ผ๋ ๊ฐ๋ ์ด ์๋๋ฐ, FocusScope๋ ํด๋น ๋ฒ์ ์์ ๋ชจ๋ ํฌ์ปค์ค๋ฅผ ๊ด๋ฆฌํ๋ค. ์ด ๋ฒ์ ๋ด์ ํฌ์ปค์ค๋ฅผ ํด์ ํ๋ฉด ํค๋ณด๋๊ฐ ๋ด๋ ค๊ฐ๋ ๋ฐฉ์์ด๋ค.
ํน์ง
- ๋ก์ปฌํ๊ฒ ๋์ํ๋ค: ํน์ ์์ ฏ ํธ๋ฆฌ์ context๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋น ํธ๋ฆฌ ๋ด์ ํฌ์ปค์ค๋ฅผ ํด์ ํ๋ค.
- ํฌ์ปค์ค ์ค์ฝํ๋ฅผ ์ ์ดํ๋ค: ์ฌ๋ฌ ์์ ฏ ๊ฐ ํฌ์ปค์ค๋ฅผ ์ธ๋ฐํ๊ฒ ์กฐ์ํ๊ฑฐ๋ ์ ์ดํ ์ ์๋ค.
์ฅ์
- ํน์ ๋ฒ์์ ํฌ์ปค์ค๋ฅผ ํด์ ํ ์ ์์ด, ์ฌ๋ฌ ์ ๋ ฅ ํ๋๊ฐ ์๋ ํ๋ฉด์์๋ ํ์ํ ๋ถ๋ถ๋ง ์ ์ดํ ์ ์๋ค.
- FocusScope๋ฅผ ํ์ฉํ๋ฉด ํฌ์ปค์ค๋ฅผ ์ ํํ๊ฑฐ๋ ํน์ ์กฐ๊ฑด์์๋ง ๋์ํ๋๋ก ๊ตฌํํ ์ ์๋ค.
๋จ์
- ํธ์ถํ๋ ค๋ฉด ๋ฐ๋์ BuildContext๊ฐ ํ์ํ๋ค.
- ์ ์ญ์ ์ผ๋ก ํค๋ณด๋๋ฅผ ์จ๊ธฐ๊ธฐ์๋ ์ ํฉํ์ง ์์ ์ ์๋ค.
์ฌ์ฉ ์์
FocusScope.of(context).unfocus();
์ฃผ์ ์ฐจ์ด์
ํน์ง | FocusManger.instance | FocusScope.of(context) |
๋์ ๋ฒ์ | ์ ์ญ์ ์ผ๋ก ํ์ฑํ๋ ํฌ์ปค์ค | ํน์ context ๋ด์ ํฌ์ปค์ค |
context ํ์ ์ฌ๋ถ | ํ์ ์์ | ํ์ |
๋์ | ํ์ฌ ํ์ฑํ๋ ํฌ์ปค์ค | ํด๋น ์ปจํ ์คํธ์ ์ฐ๊ฒฐ๋ ํฌ์ปค์ค |
์ฃผ์ ํ์ฉ | ์ ์ญ ํค๋ณด๋ ํด์ | ํน์ ์์ ฏ ํธ๋ฆฌ ๋ด ํฌ์ปค์ค ํด์ |
์ธ๋ถ ์ ์ด ๊ฐ๋ฅ ์ฌ๋ถ | ๋ถ๊ฐ๋ฅ | ๊ฐ๋ฅ |
์ธ์ ์ด๋ค ๋ฐฉ์์ ์จ์ผ ํ ๊น?
FocusManager.instance.primaryFocus?.unfocus();
- ์ ์ญ์ ์ผ๋ก ํค๋ณด๋๋ฅผ ๋ด๋ฆฌ๊ณ ์ถ์ ๋.
- ํน์ ์์ ฏ์ด๋ ํ๋ฉด๊ณผ ๊ด๊ณ์์ด ํ์ฑํ๋ ํฌ์ปค์ค๋ฅผ ๋น ๋ฅด๊ฒ ํด์ ํด์ผ ํ ๋.
FocusScope.of(context).unfocus();
- ํน์ ํ๋ฉด์ด๋ ์์ ฏ ํธ๋ฆฌ ๋ด์์๋ง ํฌ์ปค์ค๋ฅผ ํด์ ํ๊ณ ์ถ์ ๋.
- ์ฌ๋ฌ TextField๊ฐ ์๋ ํ๋ฉด์์ ๋ก์ปฌํ๊ฒ ํฌ์ปค์ค๋ฅผ ๊ด๋ฆฌํด์ผ ํ ๋.
- FocusScope๋ฅผ ํ์ฉํด ํฌ์ปค์ค๋ฅผ ์ ํํ๊ฑฐ๋ ์ธ๋ฐํ ์ ์ด๊ฐ ํ์ํ ๋.
๊ฒฐ๋ก
๋ ๋ฐฉ์ ๋ชจ๋ ํค๋ณด๋๋ฅผ ๋ด๋ฆฌ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋์ง๋ง, ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ฐฉ์์ ์ ํํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์ ์ญ์ ์ผ๋ก ๊ฐ๋จํ ํฌ์ปค์ค๋ฅผ ํด์ ํ๋ ค๋ฉด FocusManager.instance.primaryFocus?.unfocus();๊ฐ ๋ ์ ํฉํ๋ค.
๋ฐ๋ฉด, ํน์ ์ปจํ ์คํธ ๋ด์์๋ง ๋์ํ๋๋ก ์ ํํ๋ ค๋ฉด FocusScope.of(context).unfocus();๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋ง๋ค.
Flutter ๊ฐ๋ฐ์ ํ๋ฉด์ ์ด ๋ ๊ฐ์ง๋ฅผ ์ ์ ํ ํ์ฉํ๋ฉด ํค๋ณด๋ ์ ์ด๊ฐ ํจ์ฌ ์์ํด์ง ๊ฒ์ด๋ค.
'๐ Flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Flutter] Stack ์์ ฏ์ ํฌ๊ธฐ ๊ฒฐ์ ๋ฐฉ์ ์ดํดํ๊ธฐ (0) | 2024.11.19 |
---|---|
[Flutter] Stack์ Widgets๋ฅผ ์ํ์ผ๋ก ๋ฐฐ์นํ๊ธฐ (Circle Layout) (0) | 2024.10.08 |
[Flutter] MediaQuery.of(context) ์ฌ์ฉ์ ๋ฌธ์ ์ (0) | 2024.10.07 |
[Flutter] Riverpod์ด๋ ์ํ๊ด๋ฆฌ๋ก Localization ์ฆ์ ๋ฐ๋๊ฒ ๋ง๋ค๊ธฐ (1) | 2024.10.07 |
[Flutter] Factory๋ฅผ ํตํ Singleton ํจํด (0) | 2024.10.05 |