import "package:flutter/material.dart";
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
title : "Flutter Demo",
theme: ThemeData(primarySwatch: Colors.blue),
home: MyHomePage(title: '๋๊ฐ์~~~'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key : key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.title),), //widget์ด ํด๋น ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํด => this ์ ๋น์ทํ๊ฑด๊ฐ??
body : Center(
child : Column(mainAxisAlignment: MainAxisAlignment.center,// ํ๋ฉด์์ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ๋ฐฐ์นํ ์ ์์ + ๊ฐ์ด๋ฐ ์ ๋ ฌ
children : <Widget>[ // child ๋ด์์ ์ ๋ ฌ๋ ์์ดํ
๋ค
Text("๋ฒํผ ๋ง์ด ๋๋ฌ๋๋ฌ"), //ํฐํธ๋ ์ค์ ํ ์ ์์
Text('$_counter', style : Theme.of(context).textTheme.display1),
// ์ด๋ฐ์์ผ๋ก ์คํ์ผ์ ๋ฃ์ ์ ๋ ์์
]
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: "Increment",
child : Icon(Icons.add)
),
);
}
void _incrementCounter() {
setState((){
_counter++;
});
//StateLess์์ ฏ๊ณผ StateFull ์์ ฏ์ ์ดํดํ๊ณ setState()๋ฅผ ์ดํดํด์ผํจ.
// StateLess => ๋ณ๊ฒฝ ๋ถ๊ฐ
// StateFull => ๋ณ๊ฒฝ ๊ฐ๋ฅ
// setState() ๋ฅผ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํด์ค๋ค.
}
}
-์ด๊ธฐ package:flutter/material.dart
๋ฅผ Import
ํ๋ค.
void Main() => runApp(MyApp());
MyApp
์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ํ๋ก๊ทธ๋จ์์คํ
Flutter
์๋Stateful
์์ ฏ๊ณผStateless
์์ ฏ์ด ์๋ค.Stateful
=> ํ๋ฉด์์์ ๋ด์ฉ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅStateless
=> ํ๋ฉด์์์ ๋ด์ฉ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅStateful
์ ๊ฒฝ์ฐsetState()
๋ฅผ ์ฌ์ฉํด ์ํ๋ฅผ ๋ณ๊ฒฝํด์ค๋ค.
๋ด์ฉ ๋ค์ฌ๋ค๋ณด๊ธฐ
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.title),), //widget์ด ํด๋น ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํด => this ์ ๋น์ทํ๊ฑด๊ฐ??
body : Center(
child : Column(mainAxisAlignment: MainAxisAlignment.center,// ํ๋ฉด์์ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ๋ฐฐ์นํ ์ ์์ + ๊ฐ์ด๋ฐ ์ ๋ ฌ
children : <Widget>[ // child ๋ด์์ ์ ๋ ฌ๋ ์์ดํ
๋ค
Text("๋ฒํผ ๋ง์ด ๋๋ฌ๋๋ฌ"), //ํฐํธ๋ ์ค์ ํ ์ ์์
Text('$_counter', style : Theme.of(context).textTheme.display1),
// ์ด๋ฐ์์ผ๋ก ์คํ์ผ์ ๋ฃ์ ์ ๋ ์์
]
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: "Increment",
child : Icon(Icons.add)
),
);
appBar
=> ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋จ๋ฐ๋ฅผ ์์ฑcolumn
=> ์ด๋ฆ์column
์ด์ง๋ง ํ๋ฉด์์ ํ๋์column
๋ฐฉํฅ์ผ๋ก ์คํ์ฒ๋ผ ์ฌ๋ฌ๊ฐ์ง ๋ด์ฉ๋ฌผ์ ์ ๋ฆฌํ๊ณ ์์์ค๋ค. ์ ๋ ฌ๋ ๊ฐ๋ฅํ๋ค.- ์ด๋ฅผ ํตํด ์์ดํ ๋ฐฐ์น๋ฅผ ๊ตฌํํ ์ ์์.
children
=>child
๋ด์์ ์ฌ์ฉ๋ ์์ดํ ๋ค์ ์ ์ธํ ์ ์๋ค.
child๋ด์์ ์ฌ์ฉ๋ ์์ดํ ๋ค children์ผ๋ก ์ ์ํ๊ธฐ
child : Column(mainAxisAlignment: MainAxisAlignment.center,
// ํ๋ฉด์์ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ๋ฐฐ์นํ ์ ์์ + ๊ฐ์ด๋ฐ ์ ๋ ฌ
children : <Widget>[ // child ๋ด์์ ์ ๋ ฌ๋ ์์ดํ
๋ค
Text("๋ฒํผ ๋ง์ด ๋๋ฌ๋๋ฌ"), //ํฐํธ๋ ์ค์ ํ ์ ์์
Text('$_counter', style : Theme.of(context).textTheme.display1),
// ์ด๋ฐ์์ผ๋ก ์คํ์ผ์ ๋ฃ์ ์ ๋ ์์
child
์์column
์ ์ด์ฉํด ํ์ ์ก๊ณchildren
์์Text()
๋ฅผ ํตํด ํ ์คํธ๋ค์ ์ ๋ ฌํด์ค๋ค. ์ด๋Text()
๋ด๋ถ์ ํ ์คํธ๋ณ ์คํ์ผ์ ์ง์ ํ ์๋ ์๋ค.
'๐ป Programming Language > Flutter-Dart' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Flutter 3rd Study (0) | 2022.04.10 |
---|---|
Flutter 2nd Study (0) | 2022.04.09 |