728x90
210920 월
덧셈 계산기 앱 만들기
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
static const String _title = 'Widget Example';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: WidgetApp(),
);
}
}
class WidgetApp extends StatefulWidget {
@override
_WidgetExampleState createState() => _WidgetExampleState();
}
class _WidgetExampleState extends State<WidgetApp>{
String sum = '';
TextEditingController value1 = TextEditingController();
TextEditingController value2 = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Widget Example'),
),
body: Container(
child: Center(
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(15),
child: Text(
'결과 : $sum',)
style: TextStyle(fontSize: 20),
),
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),
),
Padding(
padding: EdgeInsets.all(15),
child: ElevatedButton(
child: Row(
children: <Widget>[
Icon(Icons.add),
Text('더하기')
],
),
style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.amber)),
onPressed: () {
setState(() {
int result = int.parse(value1.value.text) + int.parse(value2.value.text);
sum = '$result';
});
}
),
),
],
),
),
),
);
}
}
👉🏻 onPressed: 버튼이 눌리면 발생하는 이벤트
👉🏻 Padding: 위젯 사이의 간격을 벌린다. EdgeInsets로 옵션을 지정한다. all, only가 있다.
👉🏻 TextEditingController: 텍스트필드를 다룬다.
👉🏻 keyboardType: 사용자에게 보일 키보드를 지정한다. ex) 덧셈이니까 숫자 키워드 나타남
👉🏻 setState: 위젯의 상태를 갱신한다. State 클래스를 상속받은 클래스에서만 호출할 수 있다.
뺄셈, 곱셈, 나눗셈 기능 추가하기
class _WidgetExampleState extends State<WidgetApp>{
List _buttonList = ['더하기', '빼기', '곱하기', '나누기'];
List<DropdownMenuItem<String>> _dropDownMenuItems = new List.empty(growable: true);
String? _button Text;
String sum = '';
TextEditingController value1 = TextEditingController();
TextEditingController value2 = TextEditingController();
@override
void initState() {
super.initState();
for(var item in _buttonList) {
_dropDownMenuItems.add(DropdownMenuItem(value: item, child: Text(item)));
}
_buttonText = DropdownMenuItems[0].value;
}
👉🏻 상태를 초기화하는 initState 함수를 이용한다.
✍🏻 _dropDownMenuItems를 비워두었다가 list에 있는 요소를 for문을 이용해 넣어준다.
Padding(
padding: EdgeInsets.all(15),
child: ElevatedButton(
child: Row(
children: <Widget>[Icon(Icons.add), Text(_buttonText)],
),
style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.amber)),
onPressed: () {
setState(() {
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;
}
sum = '$result';
});
}
),
),
Padding(
padding: EdgeInsets.all(15),
child: DropdownButton(items: _dropDownMenuItems, onChanged: (String? value){
setState(() {
_buttonText = value;
});
}, value: _buttonText,),
)
👉🏻 DropdownButton(펼침 버튼): items는 표시할 아이템 목록, onChanged는 아이템이 바뀔 때 처리할 이벤트이다. items에는 위의 List를 넣어준다. onChanged에는 사용자가 선택한 _buttonText값이 나오게 한다.
👉🏻 setState 함수에 사칙연산 과정을 넣어준다.
728x90
'그 땐 App했지 > 그 땐 Flutter했지' 카테고리의 다른 글
[TAVE/Study] Do it! Flutter 5장 탭바와 리스트 만들기② (0) | 2021.09.29 |
---|---|
[TAVE/Study] Do it! Flutter 5장 탭바와 리스트 만들기① (0) | 2021.09.29 |
[TAVE/Study] Do it! Flutter 4장 플러터 위젯 사용법① (0) | 2021.09.22 |
[TAVE/Study] Do it! Flutter 3장 플러터 내부 구조 살펴보기② (0) | 2021.09.21 |
[TAVE/8thStudy] Do it! Flutter 3장 플러터 내부 구조 살펴보기① (0) | 2021.09.21 |