ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day6
์ง๋ ์๊ฐ๊น์ง๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ฌํฐ ์์ ฏ์ ๋ดค์๋ค.
์ด๋ฒ์๋ ๊ณ์ฐ๊ธฐ ์ฑ์ ๋ง๋ค์ด์ ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๋ ์์ ฏ์ ๋ณด๋ ค๊ณ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒํผ์ ์ฌ์ฉ์๊ฐ ๋๋ ์ ๋ onPressed๋ผ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
๋ง์ ๊ณ์ฐ๊ธฐ ์ฑ ๋ง๋ค๊ธฐ
1. ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ main.dart ํ์ผ์์ Column์ ์ฌ์ฉํ ์ ์๊ฒ StatefulWidget์ ๋ง๋ ๋ค.
2. Column์ children์ ์ ์ธํ ํ ์ฐจ๋ก๋๋ก Text, Textfield, ElevateButton ์์ ฏ์ ์ถ๊ฐํ๋ค.
ElevateButton ์์ ฏ์ onPressed๋ ๋ฒํผ์ด ๋๋ ธ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ด๋ค.
child : Column(
children : <Widget>[
Text('flutter'),
TextField(),
ElevatedButton(child: const Text(''), onPressed: () {
})
],
),
์์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์์ ฏ๋ค์ด ์๋ก ๋ถ์ด ๋ณด์ธ๋ค.
3. ์์ ฏ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ๋ ๋ฒ๋ฆฌ๊ธฐ ์ํด Padding์ ์ด์ฉํ๋ค.
child : Column(
children : <Widget>[
Padding(
padding: EdgeInsets.all(15),
child : Text('flutter'),
),
Padding(
padding: EdgeInsets.only(left: 20, right: 20),
child : TextField(),
),
Padding(
padding: EdgeInsets.all(15),
child : ElevatedButton(child: const Text(''), onPressed : () {}),
),
],
),
4. ๋ ์๋ฅผ ์ ๋ ฅ ๋ฐ์์ ๋ง์ ํ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค.
๋ฐ์ดํฐ ์ ๋ ฅ์ ํ ์คํธํ๋(TextField)๋ฅผ ์ฌ์ฉํ๋ค.
ํ ์คํธํ๋๋ฅผ ๋ค๋ฃจ๋ ค๋ฉด TextEditingController๋ฅผ ์ค์ ํด์ผ ํ๋ค.
_WidgetExampleState ํด๋์ค์ TextEditingController๋ฅผ ์ ์ธํ๋ค.
class WidgetExampleState extends State<WidgetApp> {
String sum = '';
TextEditingController value1 = TextEditingController();
TextEditingController value2 = TextEditingController();
...
5. ์ฒซ ๋ฒ์งธ ํ ์คํธํ๋์๋ value1์, ๋ ๋ฒ์งธ ํ ์คํธํ๋์๋ value2๋ฅผ ์ ๋ ฅํ๋ค.
Padding(
padding : EdgeInsets.only(left: 20, right: 20),
child: TextField(keyboardType: TextInputType.number, controller: value1),
),
Padding(
padding : EdgeInsets.only(left: 20, right: 20),
child: TextField(keyboardType: TextInputType.number, controller: value2),
),
keyboardType์๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ผ ํค๋ณด๋๋ฅผ ์ง์ ํ๋ค.
number๋ฅผ ์ง์ ํ๋ฉด ์ซ์ ์ ๋ ฅ์ฉ ํค๋ณด๋๊ฐ ๋ํ๋๋ค.
ํ๋ฌํฐ๊ฐ ์ ๊ณตํ๋ ํค๋ณด๋ ์ ํ์ number๋ฟ๋ง ์๋๋ผ
text(๊ธฐ๋ณธ ํ ์คํธ), multiline(๋ฉํฐ ๋ผ์ธ ํ ์คํธ), phone(์ ํ๋ฒํธ ์ ์ฉ),
datetime(๋ ์ง ์ ๋ ฅ), emailAddress(@ ํ์), url(์ฃผ์ ์ ๋ ฅ) ๋ฑ์ด ์๋ค.
6. ๋ํ๊ธฐ ๋ฒํผ์ ๋๋ ์ ๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ ์๋ฅผ ๋ง์ ํ ์ถ๋ ฅํ๋ค.
๋จผ์ ๊ณ์ฐ๋ ๊ฒฐ๊ณผ sum์ Text ์์ ฏ์ ํ์ํ๋ ๋ถ๋ถ์ ์์ฑํ๋ค.
child: Text(
'๊ฒฐ๊ณผ: $sum',
style: TextStyle(fontSize: 20),
),
7. ๋ ์๋ฅผ ๋ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ๋ ์๋ ํ์ฌ ์ฌ์ฉ์๊ฐ ํ ์คํธํ๋์ ์ ๋ ฅํ์ผ๋ฏ๋ก ์ด ๊ฐ์ ๊ฐ์ ธ์์ผ ํ๋ค.
๋ง์ ์ฐ์ฐ์ ์ฌ์ฉ์๊ฐ ๋ํ๊ธฐ ๋ฒํผ์ ๋๋ ์ ๋ ์ด๋ค์ ธ์ผ ํ๋ฏ๋ก ElevatedButton์ onPressed ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ถ๋ถ์ ์์ฑํ๋ค.
onPressed: () {
setState(() {
int res = int.parse(value1.value.text) + int.parse(value2.value.text);
sum = '$result';
});
}
...
๋บ์ , ๋๋์ , ๊ณฑ์ ๊ธฐ๋ฅ ์ถ๊ฐํ๊ธฐ
์คํ ์ดํธํ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ด์ฉํ์ฌ ์ํ๋ฅผ ์ด๊ธฐํํ๋ ํจ์์ธ initState()ํจ์ ์์ฑํ๋ค.
@override
void initState() {
super.initState();
for (var item in _buttonList) {
_dropDownMenuItems.add(DropdownMenuItem(value: item, child: Text(item)));
}
buttonText = _dropDownMenuItems[0].value;
}
initState() ํจ์์์ _buttonList์ ์๋ ๋ฌธ์์ด์ ํ๋์ฉ ๋นผ์ _dropDownMenuItems์
์ถ๊ฐํจ์ผ๋ก์จ ์์ดํ ๋ชฉ๋ก์ ํผ์นจ ๋ฒํผ์ ๋ฃ์ ๋ฉ๋ด ์์ดํ ์ผ๋ก ๋ง๋ ๋ค.
์ฌ์ฉ์๊ฐ ํผ์นจ ๋ฒํผ์์ ์์ดํ ์ ์ ํํ์ ๋ ์ฐ์ฐ ๋ฒํผ์ ๊ฐ๋ ์ฌ์ฉ์๊ฐ ์ ํํ ๊ฐ์ผ๋ก ๋ฐ๋๋๋ก ์์ ํ๋ค.
Text(_buttonText!)
์ฐ์ฐ์ ์ ํํ๊ณ ์ฐ์ฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ ์คํธํ๋์ ์๋ ๋ ๊ฐ์ ์ซ์๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ ํํ ์ฐ์ฐ์ ์ํํ๋๋ก ํ๋ค.
var value1Int = double.parse(value1.value.text);
var value2Int = double.parse(value2.value.text);
var result;
if (buttonText == '๋ํ๊ธฐ') {
result = value1Int + value2Int;
}
else if (buttonText == '๋นผ๊ธฐ') {
result = value1Int - value2Int;
}
else if (buttonText == '๊ณฑํ๊ธฐ') {
result = value1Int * value2Int;
}
else {
result = value1Int / value2Int;
}
์ต์ข ์ ์ผ๋ก ์คํ์ ํ๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋์ค๊ฒ ๋๋ค.
'๐ฑ Mobile > ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day7 (0) | 2023.08.20 |
---|---|
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day5 (0) | 2023.01.07 |
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day4 (0) | 2023.01.06 |
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day3 (0) | 2023.01.03 |
ํ๋ฌํฐ ์ฑํ๋ก๊ทธ๋๋ฐ Day2 (0) | 2023.01.02 |