ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day3
ํ๋ฌํฐ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด ๋ง์ ํ์ผ๊ณผ ํด๋๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ค.
์ด๋ฌํ ํ๋ฌํฐ ํ๋ก์ ํธ์ ๊ตฌ์ฑ์ ์ดํด๋ณด๋๋ก ํ๋ค.
๊ทธ๋ฆฌ๊ณ , ํ๋ฌํฐ ์ฑ ๊ฐ๋ฐ์์ ํต์ฌ์ธ ์์ ฏ๊ณผ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์์๋ณด๋ ค๊ณ ํ๋ค.
ํ๋ฌํฐ ํ๋ก์ ํธ ๊ตฌ์กฐ
ํด๋ | ๋ด์ฉ | ๋น๊ณ |
android | ์๋๋ก์ด๋ ํ๋ก์ ํธ ๊ด๋ จ ํ์ผ | ์๋๋ก์ด๋ ์คํ๋์ค๋ก ์คํ ๊ฐ๋ฅ |
iOS | iOS ํ๋ก์ ํธ ๊ด๋ จ ํ์ผ | ์์ค์ฝ๋๋ก ์คํ ๊ฐ๋ฅ(๋งฅ ์ ์ฉ) |
lib | ํ๋ฌํฐ ์ฑ ๊ฐ๋ฐ์ ์ํ ๋คํธ ํ์ผ | ํ๋ฌํฐ SDK ์ค์น ํ์ |
test | ํ๋ฌํฐ ์ฑ ๊ฐ๋ฐ ์ค ํ ์คํธ ํ์ผ | ํ ์คํธ ํธ์์ฑ ์ ๊ณต |
๋ฃจํธ์์๋ ์ฌ๋ฌ ํ์ผ์ด ์์ง๋ง, ์ฌ๊ธฐ์ ์ฃผ๋ชฉํ ํ์ผ์ pubspec.yaml์ด๋ค.
pubspec.yaml ํ์ผ์ ํ๋ฌํฐ์์ ๋ค์ํ ํจํค์ง์ ์ด๋ฏธ์ง, ํฐํธ ๋ฑ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.
์ํ ์ฐ๊ฒฐ์ ๋ฐ๋ฅธ ์์ ฏ ๊ตฌ๋ถ
ํ๋ฌํฐ ์ฑ์ ๊ตฌ์ฑํ๋ ์์ ฏ์ ์คํ ์ดํธ๋ฆฌ์ค(stateless)์ ์คํ ์ดํธํ(statefull) ๋ ๊ฐ์ง๋ก ๊ตฌ๋ถ๋๋ค.
๋ด์ฉ์ ๊ฐฑ์ ํ ํ์๊ฐ ์๋ ์์ ฏ์ ํ๋ฉด์ ๋ณด์ด๊ธฐ ์ ์ ๋ชจ๋ ๋ก๋ฉ์ ๋๋ธ๋ค.
์ํ๋ฅผ ์ฐ๊ฒฐํ ํ์๊ฐ ์๋ ์์ ฏ์ ์คํ ์ดํธ๋ฆฌ์ค ์์ ฏ์ด๋ผ๊ณ ํ๋ฉฐ StatelessWidget ํด๋์ค๋ฅผ ์์ ๋ฐ์์ ๋ง๋ ๋ค.
๋ฐ๋ฉด์ ๋ด์ฉ์ ๊ฐฑ์ ํด์ผ ํ ๋๋ ์๋ค.
์ฑ์ด ์์ ฏ์ ์ํ๋ฅผ ๊ฐ์ํ๋ค๊ฐ ์์ ฏ์ด ํน์ ์ํ๊ฐ ๋๋ฉด ์๋ง์ ์ฒ๋ฆฌ๋ฅผ ์ํํด์ผ ํ๋ค.
์ด์ฒ๋ผ ์ํ๊ฐ ์ฐ๊ฒฐ๋ ๋์ ์ธ ์์ ฏ์ ์คํ ์ดํธํ ์์ ฏ์ด๋ผ๊ณ ํ๋ฉฐ StatefullWidget ํด๋์ค๋ฅผ ์์ ๋ฐ์์ ๋ง๋ ๋ค.
๋ฐ๋ชจ ์ฑ ์์ ํ๊ธฐ
์๋๋ก์ด๋ ์คํ๋์ค๊ฐ ๋ง๋ค์ด์ค ํ๋ฌํฐ ํ๋ก์ ํธ์ ๋ฐ๋ชจ ์ฑ์ ๋ณ๊ฒฝํ๋ค.
๋ง์ง๋ง ์ค home : Text('HelloFlutter'), ๋ง ์์ ์ ํด์ค๋ค.
์คํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๊ธฐ๋ณธ์ ์ธ ํ๋ฉด ๊ตฌ์กฐ์์ ๋ฒ์ด๋๋ฉด ๊ธฐ๋ณธ ํ ๋ง๊ฐ ์ ์ฉ๋์ง ์๊ณ
์์ ๊ฐ์ด ํ ์คํธ์ ๋ ธ๋์ ๋ฐ์ค์ด ์๊ธด๋ค.
์ด๋ฒ์๋ ํ ์คํธ๋ฅผ ํ๋ฉด ํ๊ฐ์ด๋ฐ์ ๋์๋ณด๋ ค๊ณ ํ๋ค.
home : Center(
child : Text('Hello\nFlutter', textAlign: TextAlign.center),
));
์์ ์ฝ๋์ ๊ฐ์ด ์๊น ๊ทธ ๋ถ๋ถ์ ๋ค์ ์์ ํด์ฃผ๋ฉด
Center()ํจ์๋ฅผ ํธ์ถํ๊ณ child ์ต์ ์ Text()ํจ์๋ฅผ ๋ฃ์๋ค.
child ์ต์ ์ ์์ ์๋ ์ด๋ค ์์ ฏ์ ๋ฃ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.
ํ๋๋ง ๋ฃ์ ๋๋ child, ์ฌ๋ฌ ์์ ฏ์ ๋ฃ์ ๋๋ children ์ต์ ์ ์ฌ์ฉํ๋ค.
์คํ ํ๋ฉด์ ์๋์ ๊ฐ๋ค.
์ด๋ฒ์๋ ํ์ ๋ฐฐ๊ฒฝํ๋ฉด๊ณผ ๊ธ์ ์์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ค.
ํ๋ฌํฐ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์์ ฏ ์ค ํ๋์ธ ํน์ ๊ณต๊ฐ์ ์ฑ ์์ง๋ Container๋ฅผ ๋ฃ๊ณ
Container์ color๋ฅผ ๋ฃ์ผ๋ฉด ํ์์ ๋ฐฐ๊ฒฝ์ผ๋ก ๋ฐ๋๋ค.
Text ์์ style ์ต์ ์ ์ถ๊ฐํ์ฌ color์ fontSize๋ฅผ ๋ณ๊ฒฝํ๋ค.
home : Container(
color : Colors.white,
child : Center(
child : Text(
'Hello\nFlutter',
textAlign: TextAlign.center,
style : TextStyle(color : Colors.blue, fontSize: 20),
),
)
)
);
์คํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด๋ฒ์๋ ์ฑ์ ์ค์์น๋ฅผ ๋ฌ๊ณ ํ๋ฉด์ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ์ ์ฉํ๋ ค๊ณ ํ๋๋ฐ, ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ์ ์ฉํ๋ ค๋ฉด Scaffold ํด๋์ค๋ฅผ ์ด์ฉํ๋ค.
๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ์ ์ฉํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด MyApp ํด๋์ค๋ฅผ ์์ ํ๋ค.
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
var switchValue = false;
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
darkTheme: ThemeData.light(),
home : Scaffold(
body: Center(
child: Switch(
value: switchValue,
onChanged: (value) {
switchValue = value;
}),
),
));
}
}
์คํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ด ์ค์์น๊ฐ ์ฑ์ ํ๋ฉด์ ๋ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํ์ง๋ง, ํ์ฌ ์ํ๋ก๋ ์ค์์น๋ฅผ ์๋ฌด๋ฆฌ ๋๋ฌ๋ ํ๋ฉด์ ๋ณํ๊ฐ ์๋ค.
์คํ ์ดํธ๋ฆฌ์ค ์์ ฏ์ ์คํ ์ดํธํ ์์ ฏ์ผ๋ก ๋ฐ๊พผ๋ค.
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyApp();
}
}
class _MyApp extends State<MyApp> {
var switchValue = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
darkTheme: ThemeData.light(),
home : Scaffold(
body: Center(
child: Switch(
value: switchValue,
onChanged: (value) {
setState(() {
print(value);
switchValue = value;
});
}),
),
));
}
}
์ด์ ์ค์์น๋ฅผ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ด ๋ฐ๋ ๊ฒ์ด ํ๋ฉด์ ๋ํ๋ ๊ฒ์ด๋ค.
๋ฒํผ์ ์ข ๋ ์๋ค๋ฅด๊ฒ ๋ณ๊ฒฝํด๋ณด๋ ค๊ณ ํ๋ค.
ํด๋ฆญ ์ฌ๋ถ๋ก 'Hello'์ 'Flutter'๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ํ๋ฉด์ ๋ํ๋๋๋ก
์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ ํ๋ค.
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
darkTheme: ThemeData.light(),
home : Scaffold(
body: Center(
child: ElevatedButton(
child: Text('$test'),
onPressed: () {
if (test == 'Hello') {
setState(() {
test = 'Flutter';
});
} else {
setState(() {
test = 'Hello';
});
}
})),
));
}
}
'๐ฑ Mobile > ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day6 (0) | 2023.01.08 |
---|---|
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day5 (0) | 2023.01.07 |
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day4 (0) | 2023.01.06 |
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day2 (0) | 2023.01.02 |
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day1 (0) | 2023.01.01 |