Flutter ์ฑ์์ ํฐ์น ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ๋, GestureDetector
์ ์ฝ๋ฐฑ ํจ์์ ์ฌ์ฉ์ ์กฐ์ฌํด์ผ ํ๋ค. ํนํ ํจ์์ ์ธ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฝ๋ฐฑ์ ์ค์ ํ์ง ์์ผ๋ฉด ์์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง์ฃผ์น๊ฒ ๋๋ค.
์ฝ๋ฐฑ ํจ์๋ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํ๋๋๋ก ์ค์ ๋ ํจ์๋ก, Flutter์์ ์ฝ๋ฐฑ์ ์ฃผ๋ก ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋ ํ๋ฉด์ ํฐ์นํ ๋ ํธ์ถ๋๋ค. ์ด๋ฌํ ์ฝ๋ฐฑ ํจ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๊น์ง ์คํ๋์ง ์์ผ๋ฉฐ, ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋๋ง ํธ์ถ๋๋๋ก ์ค์ ๋๋ค.
GestureDetector(
onTap: () {
print("Button tapped!");
},
child: Text("Tap me"),
),
์ ์ฝ๋์์ onTap
์ ์ฌ์ฉ์๊ฐ ํด๋น ํ
์คํธ๋ฅผ ํด๋ฆญํ์ ๋๋ง ์คํ๋๋ ์ฝ๋ฐฑ ํจ์๋ค.
๋ด๊ฐ ๋ง์ฃผ์น ๋ฌธ์ ๋ ์๋ ์์ ์ฝ๋์์ ๋ณด์ด๋ฏ, ํจ์ ํธ์ถ์ ์ฆ์ ์คํํ๊ฒ ๋์ด ๋ฐ์ํ๋ค. ์ ํํ๋ flutter์์ ํ๋ฉด์ build ํ๋ ์ค์ ์ํ๊ฐ ๋ณ๊ฒฝ๋์ด build ๊ฐ ์ฌ๋ฌ๋ฒ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
GestureDetector(
onTap: onLoginTap(context), // ์๋ชป๋ ์ฌ์ฉ
child: Text("Login"),
),
์์ ์ฝ๋์์๋ onLoginTap(context)
๊ฐ ์ฆ์ ํธ์ถ๋๊ณ , ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ด onTap
์ ์ ๋ฌ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํญํ๊ธฐ๋ ์ ์ ํจ์๊ฐ ์คํ๋๋ ๋์์ ์ ๋ฐํ ์ ์๋ค.
ํจ์ ํธ์ถ์ ์ฝ๋ฐฑ์ผ๋ก ์ ๋ฌํ๋ ค๋ฉด, ๋๋ค ํํ์์ด๋ ์ต๋ช ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํจ์๊ฐ ์ ์๋ ์์ ์์๋ ์คํ๋์ง ์๊ณ , ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ํญํ ๋๋ง ํธ์ถ๋๋ค.
GestureDetector(
onTap: () => onLoginTap(context), // ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ
child: Text("Login"),
),
๋๋ ์ต๋ช ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์๋ ์๋ค:
GestureDetector(
onTap: () {
onLoginTap(context); // ์ต๋ช
ํจ์ ์ฌ์ฉ
},
child: Text("Login"),
),
์ด ๋ฐฉ์์ onTap
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๊น์ง onLoginTap(context)
๊ฐ ํธ์ถ๋์ง ์๋๋ค.
๋ง์ฝ ํจ์์ ์ธ์๊ฐ ์๋ค๋ฉด, ํจ์ ์ด๋ฆ๋ง์ผ๋ก ์ฝ๋ฐฑ์ ์ ๋ฌํ ์ ์๋ค . ๋๋ ์ด ๋ถ๋ถ์ ๋ํด ์ธ์งํ๊ณ ์์ง ์์์ ์ธ์๊ฐ ์๋ ํจ์๋ฅผ ์ ๋ฌํ ๋๋ ์ฝ๋ฐฑ ํจ์๋ ์ต๋ช ํจ์๋ฅผ ์ฌ์ฉํ์ง ์์๋ค.
void onLoginTap() {
print('Login button tapped!');
}
GestureDetector(
onTap: onLoginTap, // ์ธ์๊ฐ ์๋ ๊ฒฝ์ฐ
child: Text("Login"),
),
์ด ๊ฒฝ์ฐ์๋ ํจ์ ์ด๋ฆ๋ง ์ ๋ฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ()
๊ฐ ํ์ ์๋ค. Flutter๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ํด๋น ํจ์๊ฐ ํธ์ถ๋๋๋ก ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ค.
GestureDetector
์์ ์ฝ๋ฐฑ ํจ์ ์ ๋ฌ ์, ๋๋ค ํํ์์ด๋ ์ต๋ช
ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํจ์๊ฐ ์ฆ์ ์คํ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ค.