1. ๋ฌธ์ ์ ๋ฐ๋จ
๊ฐ๋ฐ์ ํ๋ ์ค์ ์ ์ฌ์ง์ ๋นจ๊ฐ์ ๋ฐ์ค ๋ถ๋ถ, ์ฆ ์ ํ ๊ฒ์ ๊ฐ๋ก ๋ถ๋ถ ์ค ์ด๋๋ฅผ ํด๋ฆญํด๋ GestureDetector๋ฅผ ํตํด
์ธ์์ ํ๊ฒ ๋ง๋ค๊ณ ์ถ์์ต๋๋ค.
Row(
children: [
Expanded(
child: GestureDetector(
onTap: () {
print('Clicked');
},
// ํ ์์ญ ๋ถ๋ถ ์ด๋๋ฅผ ํด๋ฆญํด๋ ์ธ์๋๋๋ก ์ปจํ
์ด๋๋ก ๊ฐ์ธ๊ธฐ
child: Container(
child: const Row(
children: [
Icon(Icons.search, color: Colors.grey),
SizedBox(width: 10),
Text('์ ํ ๊ฒ์', style: TextStyle(color: Colors.grey)),
],
),
),
),
),
... [๊ทธ ์ธ ์ฝ๋]
],
);
์ผ๋จ [ ์์ด์ฝ - ํ ์คํธ ] ๊ตฌ์กฐ์ Container๋ฅผ ๊ฐ์ธ์ ์ ์ฒด๊ฐ ์ธ์๋๋๋ก ๊ตฌํํ์! ๋ผ๋ ์๊ฐ์ด์์ต๋๋ค.
ํ์ง๋ง ์ค์ ๋ก ์ธ์๋๋ ๋ถ๋ถ์
์ด๋ ๊ฒ ์์์ด ๊ฐ์ง ์ ์๋ ์ต๋ ๋์ด๋งํผ๋ง ์ธ์์ด ๋์์ต๋๋ค.
๊ทธ๋์ width๋ฅผ double.infinity ๋ฅผ ํด๋ณด๊ธฐ๋ ํ๊ณ Row์ mainAxisSize๋ฅผ max๋ก ์ฃผ์ด๋ ๊ฒฐ๊ตญ์ ๋๊ฐ์์ต๋๋ค.
๊ทธ๋์ ์์ธ์ ์์๋ณด๊ธฐ ์ํด Container๊ฐ ๋๋น๋ฅผ ์ด๋์ ๋ ์ฐจ์งํ๋์ง ์๊ธฐ ์ํด Color๋ก ์ฒดํฌ๋ฅผ ํด๋ณด์์ต๋๋ค.
์๋ ๋ญ์ผ! ์ ์์ ์ผ๋ก ๋๋น๋ ์ ๋จน๊ณ ์์์!
๊ทธ๋์ ๋ค์ ํด๋ฆญ์ ํด๋ณด์๋๋ฐ ์ธ์์ด ๋๋ ๊ฒ์ ๋๋ค....
์ฒ์์๋ ํ๋ ์์ํฌ ์ค๋ฅ์ธ์ค ์๊ณ ๊ป๋ค ํค๊ณ ๋ค์ ๋ฐ๋ณตํ๋๋ฐ ์ค๋ฅ๋ ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
๊ทธ๋์ ๋๋์ฒด ์๊น์ ์ ํ์ผ๋ง ์ ๋๋น๋ฅผ ์ธ์ํ๊ณ GestureDetector๋ ์ธ์์ ํ๊ฒ ๋๋ ๊ฒ์ผ๊น ์ฐพ์๋ณด์์ต๋๋ค.
๊ทธ๋์ ์ฐพ์๋ณธ ๊ฒฐ๊ณผ ๊ฒฐ๋ก ์ ์ผ๋ก๋
GestureDetector์ ๋์๋ฐฉ์๊ณผ ์์ ฏ์ ๋ ๋๋ง ๋ฐ ํํธ ํ ์คํ ๋งค์ปค๋์ฆ๊ณผ ๊ด๋ จ์ด ์์์ต๋๋ค.
Flutter์์ ์์ ฏ์ ๋ ๋๋ง ํธ๋ฆฌ์ ์ค์ ๋ก ๊ทธ๋ ค์ง ๋๋ง ํํธ ํ ์คํธ(์ฆ, ํฐ์น ์ด๋ฒคํธ)์ ์ฐธ์ฌ ํ๋ค๊ณ ํฉ๋๋ค.
์ฆ, Container์ ๊ฐ์ ์์ ฏ์ด ํน์ ํ ํฌ๊ธฐ๋ฅผ ๋ฐฐ์ ๋ฐ์ง ์๊ณ ๋ฐฐ๊ฒฝ์๋ ์์ ๊ฒฝ์ฐ์๋
Flutter ๋ ๋๋ง ์์ง ์ ์ฅ์์๋ ๊ทธ ์์ ฏ์ด ์ค์ ๋ก ํ๋ฉด์ ํ์๋๋ ์์ญ์ด ์๋ค๊ณ ํ๋จํ๋ค๊ณ ํฉ๋๋ค.
(์ด ๋ถ๋ถ์ ์๋ง๋ ํ์์๋ ๋ฆฌ์์ค ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค)
๋ฐ๋ผ์ GestureDectector๊ฐ ๊ฐ์งํ๋ ์์ญ๋ ์ค์ ๋ก ์๋ค๊ณ ๋จ๋ ๊ฒ์ด๊ณ ์
์ผ๋จ ์์ธ์ ์์์ผ๋ ํด๊ฒฐ๋ฒ์ ์์๋ด ์๋ค.
์ผ๋จ ๋ฐฐ๊ฒฝ์์ ๋ฃ์ผ๋ฉด ํด๊ฒฐ๋๋ ๊ฒ ๊ฐ๋ค์ ๊ทธ๋ ๋ค๊ณ ๋ด๊ฐ ์ง๊ธ ๋ฌด์จ ์์ ๋ฃ์๋์ง ํ์ธํ๋ ๊ฒ๋ ๋ฒ๊ฑฐ๋ก์ฐ๋
color: Colors.transparent, // ํฌ๋ช
ํ ๋ฐฐ๊ฒฝ์ ์ถ๊ฐ
์ด๋ ๊ฒ ๋ฃ์ผ๋ฉด ๋ฌธ์ ํด๊ฒฐ ์ ๋๋ค.
Flutter๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ฉด UI๋ฅผ ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ์๋กญ๊ฒ ์์๊ฐ๋ ์ฌ๋ฏธ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋จ์ํ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋ฏ์ด UI๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ๋ ๋๋ง์ ์๋ฆฌ๋ฅผ ์์๊ฐ๋ฉฐ ๋ฐฐ์ฐ๋ ๊ฒ๋ ์ฌ๋ฐ๋ค์.
ํน์ ๊ถ๊ธํ์ ์ ์ด๋ ์ง๋ฌธ ์์ผ๋ฉด ๋ต๋ณ ์ฃผ์ธ์. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ ์ฒด ์ฝ๋
์ฝ๋ ๋ณด๊ธฐ
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
class SearchProduct extends StatelessWidget {
const SearchProduct({super.key});
@override
Widget build(BuildContext context) {
return Row(
children: [
Expanded(
child: GestureDetector(
onTap: () {
print('Clicked');
},
child: Container(
// color: Colors.pink,
child: const Row(
mainAxisSize: MainAxisSize.max,
children: [
Icon(Icons.search, color: Colors.grey),
SizedBox(width: 10),
Text('์ ํ ๊ฒ์', style: TextStyle(color: Colors.grey)),
],
),
),
),
),
Container(
height: 30,
width: 1.0,
color: Colors.black.withOpacity(0.3),
margin: const EdgeInsets.symmetric(horizontal: 10.0),
),
IconButton(
onPressed: () {},
icon: SvgPicture.asset('assets/icons/camera.svg'),
),
],
);
}
}