반응형
들어가며
Flutter 버튼 종류
- TextButton: 단순한 텍스트 기반 버튼.
- ElevatedButton: 표면 위에 떠 있는것처럼 보이는 버튼.
- OutlinedButton: 테두리가 있는 버튼.
- IconButton: 아이콘이 포함된 버튼.
- FloatingActionButton: 화면의 특정 위치에 떠있는 부동 버튼.
Button 속성
- child: 버튼 내에 표시되는 위젯. 보통 텍스트 위젯, 아이콘 등을 포함한다.
- onPressed: 버튼이 눌렸을 때 실행되는 동작을 정의하는 콜백 함수.
- onLongPress: 버튼이 길게 눌렸을 때 실행되는 동작을 정의하는 콜백 함수.
- style: 버튼의 스타일을 지정하는 ButtonStyle 객체 설정. 이 객체는 버튼의 배경 색상, 글꼴 스타일, 모서리 모양 등을 정의할 수 있다.
- focusNode: 버튼의 포커스 노드를 지정. 키보드 포커스를 조정할 때 사용.
- autofocus: 페이지가 로드될 때 자동으로 버튼에 포커스를 설정할지 여부를 지정.
- clipBehavior: 버튼의 자식 위젯이 버튼의 경계를 벗어날 때 자르기 동작을 지정.
예제
main.dart
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Button Example',
home: Scaffold(
appBar: AppBar(
title: const Text('Button Example'),
),
body: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
width: 200, // 가로
height: 50, // 세로
margin: const EdgeInsets.all(50), // 마진
child: TextButton(
onPressed: () {
debugPrint('TextButton pressed');
},
style: TextButton.styleFrom(
padding: const EdgeInsets.all(10), // 패딩
foregroundColor: Colors.white,
backgroundColor: Colors.black,
),
child: const Text('TextButton'),
),
),
const TextButton(
onPressed: null,
child: Text('Disabled TextButton'),
),
ElevatedButton(
onPressed: () {
debugPrint('ElevatedButton pressed');
},
style: ElevatedButton.styleFrom(
elevation: 10.0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
),
child: const Text('ElevatedButton'),
),
OutlinedButton(
onPressed: () {
debugPrint('OutlinedButton pressed');
},
style: OutlinedButton.styleFrom(
side: const BorderSide(
color: Colors.grey,
width: 1.0,
),
),
child: Text('OutlinedButton'),
),
IconButton(
icon: const Icon(Icons.favorite),
onPressed: () {
debugPrint('IconButton pressed');
},
),
TextButton.icon(
label: const Text('IconTextButton'),
icon: const Icon(Icons.home),
onPressed: () {},
style: OutlinedButton.styleFrom(
foregroundColor: Colors.white,
backgroundColor: Colors.black,
minimumSize: const Size(200, 50),
),
),
ButtonBar(
alignment: MainAxisAlignment.center,
buttonPadding: const EdgeInsets.all(20),
children: [
TextButton(
child: const Text('TextButton'),
onPressed: () {},
),
OutlinedButton(
child: const Text('OutlinedButton'),
onPressed: () {},
),
],
),
FloatingActionButton(
child: const Icon(Icons.add),
onPressed: () {
debugPrint('FloatingActionButton pressed');
},
),
],
),
),
),
);
}
}
화면
반응형
'Development > Flutter' 카테고리의 다른 글
[Flutter] Container (0) | 2024.02.18 |
---|---|
[Flutter] Icon (0) | 2024.02.18 |
[Flutter] Text (0) | 2024.02.18 |
[Flutter] Scaffold (1) | 2024.02.18 |
[Flutter] MaterialApp (0) | 2024.02.18 |