์๋ ํ์ธ์ ! SSAFYcial 11๊ธฐ ์ด์งํ๊ธฐ์์ ๋๋ค.
์ด๋ฒ ํนํ ํ๋ก์ ํธ์ Flutter๋ฅผ ์ฌ์ฉํด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋ฉด์, Style ์ปค์คํ ์ด ํ๋ค์ด์ ๋ค์ React๋ก ๋์๊ฐ๊ณ ์ถ์ด์ก๋๋ฐ์...
์ด์ฉ๋ค ๋ณด๋ ๊ณ์ํด์ ์๋ก์ด ํ๋ ์์ํฌ๋ฅผ ์ ํ๋ ๊ฒ ๊ฐ์ ๋ ๊ณต๋ถํด์ผ ํ๋ ์ ๋ฐ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ใ ใ
๊ทธ๋์, ์ด๋ฒ ๊ธฐ์ฌ๋ Flutter ์คํ์ผ ์ปค์คํ ์ ๋ํด ์์ฑํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋๋ ๋ชฉ์ ์ ๊ทธ๋๋ก ๊ตฌํํ๋ ๊ฒ์ ๋ชฉ์จ๊ฑฐ๋ ํ๋ก ํธ์ธ๋ฐ, ํ๋ฌํฐ์ ๊ฒฝ์ฐ ๊ธฐ์กด์ ์์ ํ๋ css๊ฐ ์๋์ด์์ธ์ง, ์๋๋ฉด flutter ์์ฒด๊ฐ ์ปค์คํ ์ด ์ด๋ ค์ด ๊ฒ์ธ์ง ์ ๋ง ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค.
ํนํ ํ๋ฌํฐ๋ ๋น๊ต์ ์ต๊ทผ์ ์ธ๊ธฐ๋ฅผ ๋๊ณ ์๊ณ , ๊ทธ๋์ ์ฐธ๊ณ ํ ๋งํ ์๋ฃ๊ฐ ๋ง์ง ์๋ค.
๋ด๊ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋ฐ๊ฟ๋๊ฐ ์ปค์คํ ๋์์ธ๋ค์ ๋ธ๋ก๊ทธ๋ก ์์ฑํด flutter๋ฅผ ์ด์ฉํ์๋ ๋ถ๋ค๊ป ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋๋ ค๊ณ ๊ธ์ ์์ฑํ๊ธฐ๋ก ํ๋ค.
CheckboxListTile
Dropdown๋ฒํผ์ผ๋ก ๋ณต์์ ๋์ด๋๋ฅผ ์ ํํ๊ฒ ํ๋ ค ํ๋๋ฐ, ์๋ฌด๋๋ ๋ฌด๋ฆฌ๊ฐ ์์ด ๋ณด์ฌ์ ๋ชจ๋ฌ๋ก ๊ธํ๊ฒ ๋ณ๊ฒฝํ์๋ค.
๊ทธ๋ฐ๋ฐ ๋ชจ๋ฌ ์ํ๋ฅผ ๋ณด๋ ๋๋ฌด Css๋ก ๋์๊ฐ๊ณ ์ถ์ด์ง๋ ๊ธฐ๋ถ์ด ๋ ๋ค...
์ด๋๋ก๋ ์๋๊ฒ ์ด์ ๊ธํ๊ฒ ๋ชจ๋ฌ ์คํ์ผ ์ปค์คํ ์ ํ๊ฒ ๋์๋ค.
activeColor๋ฅผ ํตํด ํ์ฑํํ์ ๋์ ์ฒดํฌ ๋ฐ์ค ์์ ํ๋ก์ ํธ ๋ฉ์ธ ์ปฌ๋ฌ๋ก ๋ณ๊ฒฝํด์ฃผ๊ณ , ์ฒดํฌ ๋ฐ์ค์ ๋ผ์ด๋๋ฅผ ์ฃผ์๋ค
activeColor: Color(0xff1EA6FC),
checkboxShape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4),
),
AlertDialog(
backgroundColor: Colors.white,
)
AlertDialog์ ๋ฐฐ๊ฒฝ์๊น์ง ์ค์ ํ๊ณ ๋๋ ๊ทธ๋๋ ์ข ๊ด์ฐฎ์ ์์ค์ด ๋์๋ค.
์ถ๊ฐ ์ฌํญ
onChanged: (bool? isChecked) {
if (isChecked == true) {
// ๋ฆฌ์คํธ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์ ํ ์ถ๊ฐ
if (conditionType == 'difficulty') {
if (!controller.selectedDifficulty.contains(item)) {
controller.selectedDifficulty.add(item);
}
} else {
if (!controller.selectedDistance.contains(item)) {
controller.selectedDistance.add(item);
}
}
} else {
// ์ ํ๋์ด ์๋ ๊ฒฝ์ฐ ์ ํ ํด์
if (conditionType == 'difficulty') {
controller.selectedDifficulty.remove(item);
} else {
controller.selectedDistance.remove(item);
}
}
},
์ถ๊ฐ์ ์ผ๋ก, ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ CheckboxListTile์ onChanged ์ฝ๋ฐฑ์์ bool? isChecked ๋งค๊ฐ๋ณ์๊ฐ ์ฌ์ฉ๋๊ณ ์์๋ค.
์ด์ ์ ํ์ตํ ๋ ?๋ nullable ํ์ ์ ์ง์ ํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋ฐฐ์ ๋๋ฐ,
์ฒดํฌ ๋ฐ์ค์ ๊ฒฝ์ฐ true/false ์ธ์ null์ ์ ํ์ฉํ๋์ง์ ๋ํด ์๋ฌธ์ด ์๊ฒผ๋ค.
์ฐพ์๋ณด๋ ๋ถ๋ถ์ ํ์ด๋ ๋ค์ค ์ ํ์ ํ๋ ๊ฒฝ์ฐ์ nullable checkbox๊ฐ ์ด์ฉ๋๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
์๋ฅผ ๋ค๋ฉด, ์ด๋ฉ์ผ์์์ ์ ์ฒด ์ ํ ์ฒดํฌ๋ฐ์ค์ ๊ฐ๋ณ ์ ํ ์ฒดํฌ๋ฐ์ค๊ฐ ์๋ค.
ํน์ ์ด๋ฉ์ผ์ ์ผ๋ถ๋ง ์ ํํ๋ ๊ฒฝ์ฐ์ ์ ์ฒด ์ ํ ์ฒดํฌ๋ฐ์ค์ ๊ฐ๋ true์ฌ์๋, false์ฌ์๋ ์๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์์ ์ฒดํฌ๋ฐ์ค๊ฐ ๋ถํ์ ์ํ๋ฅผ ๋ํ๋ธ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.