플러터 시작하기 05. 버튼 종류를 알아보자!

2024. 5. 16. ·프로그래밍/플러터

버튼이 없는 앱을 찾는 것은 사막에서 바늘 찾기나 다름없습니다. 어떤 액션을 취하기 위해서는 버튼을 클릭하는 행동이 필요합니다. 버튼은 어떤 용도로 사용되는지에 따라서 디자인도 다양하게 있죠. 플러터에는 자주 사용하는 5 가지의 버튼 스타일이 있습니다. 이번 포스트에서는 TextButton OutlinedButton FilledButton ElevatedButton 그리고 IconButton에 대해서 알아보도록 하겠습니다.


 

플러터 시작하기 03. BottomNavigationBar을 사용해 탭 만들기

많은 앱들이 하단 메뉴를 통해 탭 전환을 하는 형태로 디자인되어 있습니다. Scaffold의 여러 속성 중 bottomNavigationBar 속성이 바로 이 기능을 담당합니다. 이번 포스트에서는 bottomNavigationBar 속성을

torotoblog.tistory.com

 

플러터 시작하기 04. FloatingActionButton 꾸미기

Scaffold의 마지막 속성, floatingActionButton입니다! 글 쓰기, 메뉴 보기 등으로 많이 사용하는 버튼이죠. 이번 포스트에서는 이 버튼을 한번 꾸며보도록 하겠습니다.  플러터 시작하기 02. Appbar 꾸미기

torotoblog.tistory.com


TextButton 스타일

Scaffold(
    appBar: AppBar(title: const Text('Button Examples')),
    body: Center(
        child: TextButton(
            onPressed: _add,
            child: const Text('Click me!'),
        ),
    ),
);

첫 번째 버튼 스타일은 TextButton 스타일입니다. 아래 이미지처럼 테두리나 배경 색 없이 텍스트로만 이루어진 버튼입니다. 텍스트를 클릭했을 때 버튼을 클릭한 효과를 줍니다. 

OutlinedButton 스타일

Scaffold(
    appBar: AppBar(title: const Text('Button Examples')),
    body: Center(
        child: OutlinedButton(
            onPressed: _add,
            child: const Text('Click me!'),
        ),
    ),
);

두 번째 버튼 스타일은 OutlinedButton 스타일입니다. 텍스트 버튼에서 테두리가 추가된 버튼이라고 보시면 됩니다. 

FilledButton 스타일

Scaffold(
    appBar: AppBar(title: const Text('Button Examples')),
    body: Center(
        child: FilledButton(
            onPressed: _add,
            child: const Text('Click me!'),
        ),
    ),
);

세 번째 버튼 스타일은 FilledButton 스타일입니다. 배경 색을 입힌 버튼이라고 보시면 됩니다. 

ElevatedButton 스타일

Scaffold(
    appBar: AppBar(title: const Text('Button Examples')),
    body: Center(
        child: ElevatedButton(
            onPressed: _add,
            child: const Text('Click me!'),
        ),
    ),
);

네 번째 버튼 스타일은 ElevatedButton 버튼 스타일입니다. Scaffold를 배울 때도 elevation 속성이 자주 등장했었는데요, 그림자를 입혀서 공중에 떠 있는 효과를 내는 속성입니다. ElevatedButton도 마찬가지로 그림자 효과를 통해 화면에서 떠 있는 효과를 가진 버튼이라고 보시면 됩니다. 

IconButton 스타일

Scaffold(
    appBar: AppBar(title: const Text('Button Examples')),
    body: Center(
        child: IconButton(
            onPressed: _add,
            icon: const Icon(Icons.add_circle),
        ),
    ),
);

마지막 버튼 스타일은 아이콘을 사용하는 IconButton 스타일입니다. 기존의 버튼과는 달리 child로 위젯을 받는 것이 아니라 icon 속성을 통해 아이콘을 바로 입력받습니다.

버튼 클릭 구현하기

class ButtonExamples extends StatefulWidget {
  const ButtonExamples({super.key});

  @override
  State<ButtonExamples> createState() => _ButtonExamplesState();
}

class _ButtonExamplesState extends State<ButtonExamples> {
  int _count = 0; // 증가하는 값을 저장하는 변수

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Button Examples')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('$_count', style: const TextStyle(fontSize: 24)),
            OutlinedButton(
              onPressed: _add,
              child: const Text('Click me!'),
            ),
          ],
        ),
      ),
    );
  }

  /// _count를 1씩 증가시키는 함수
  void _add() {
    setState(() {
      _count += 1;
    });
  }
}

버튼을 만들었으면 버튼 클릭도 구현해 봐야겠죠! 간단하게 버튼을 클릭할 때마다 값을 1씩 증가시키도록 만들어 봅시다. 우선 값을 저장할 _count 변수를 하나 만들어 주고요, 1씩 증가시키는 함수 _add()도 만들어 주겠습니다. _counter 값이 증가할 때마다 화면에 출력되기 위해서는 변수가 변경됐으니 화면을 재구성하라는 신호가 필요합니다. 이 신호를 보내주는 역할을 setState가 담당합니다. 

이번 포스트에서는 플러터에서 제공하는 기본적인 버튼 5가지를 소개해드렸습니다. 버튼들은 style 속성으로 색이나 그림자 등을 꾸밀 수 있는데요, 다음 포스트에서 더 자세하게 알려드리도록 하겠습니다. 


반응형
저작자표시 비영리 변경금지

'프로그래밍 > 플러터' 카테고리의 다른 글

플러터 커스텀 카메라 만들기  (2) 2024.07.19
플러터 다크모드 설정 페이지 만들기  (0) 2024.07.10
플러터 시작하기 02. Appbar 꾸미기  (0) 2024.05.14
플러터 시작하기 04. FloatingActionButton 꾸미기  (0) 2024.05.14
플러터 시작하기 03. BottomNavigationBar을 사용해 탭 만들기  (0) 2024.05.13
'프로그래밍/플러터' 카테고리의 다른 글
  • 플러터 커스텀 카메라 만들기
  • 플러터 다크모드 설정 페이지 만들기
  • 플러터 시작하기 02. Appbar 꾸미기
  • 플러터 시작하기 04. FloatingActionButton 꾸미기
  • 토로토
    토로토 블로그
    • 카테고리
      • 블로그
        • 애드센스
      • 프로그래밍
        • 플러터
        • 유니티
        • 백준
      • 포토샵
      • 테크 지식
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.0
토로토
플러터 시작하기 05. 버튼 종류를 알아보자!
상단으로

티스토리툴바