PopupMenuButton (팝업 메뉴 버튼)

2025. 2. 27. 09:40·Flutter
728x90

PopupMenuButton<String> (팝업 메뉴 버튼)

Flutter에서 제공하는 드롭다운 형태의 팝업 메뉴 위젯으로, 특정 아이콘이나 버튼을 클릭하면 여러 선택지를 포함한 메뉴가 나타납니다.

Transform.translate(
                                        offset: const Offset(6, 0),
                                        child: PopupMenuButton<String>(
                                          /// 팝업 메뉴의 테두리와 round 처리
                                          shape: RoundedRectangleBorder(
                                            side: const BorderSide(
                                                width: 1, color: Colors.white),
                                            borderRadius:
                                                BorderRadius.circular(7),
                                          ),
                                          padding: EdgeInsets.zero,

                                          surfaceTintColor: Colors.white,

                                          /// z축 높이
                                          elevation: 30,

                                          /// 팝업메뉴의 배경 컬러
                                          /// icon이나 child 위젯을 선택하지 않을 때 나오는 기본 아이콘의 컬러
                                          color: Colors.white,

                                          /// LongPressed 일 때 나오는 툴팁
                                          /// "" 를 입력하면 안나옴
                                          tooltip: "",

                                          /// 팝업메뉴가 펼쳐질 때 위치설정
                                          /// over = 아이콘 위로 펼쳐짐
                                          /// under = 아이콘 아래에서 펼쳐짐
                                          position: PopupMenuPosition.under,

                                          /// itemBuilder에 들어간 String 값 중에
                                          /// initialValue와 동일하다면 선택된 효과
                                          //initialValue: "팝업메뉴 2입니다",

                                          /// 펼쳤을 때 나오는 항목들 List<PopupMenuItem>
                                          itemBuilder: (context) {
                                            return [
                                              _menuItem("편집"),
                                              _menuItem("삭제"),
                                            ];
                                          },

                                          /// 메뉴 아이템이 펼쳐졌을 때 호출
                                          onOpened: () {},

                                          /// 펼쳐진 항목 선택하지 않고, 배경 터치해서 취소한 경우
                                          onCanceled: () {},

                                          /// 선택한 값이 들어옴
                                          onSelected: (value) {
                                            if (value == "삭제") {
                                              viewModel.deleteOvenMyRecipe(
                                                  item.ovenRecipeId!);
                                            }
                                          },

                                          /// child와 icon은 둘 중 한개만 사용 가능
                                          /// 둘 다 입력 안하면 기본 아이콘 출력
                                          // child: const Text("팝업메뉴 호출" ,style: TextStyle(fontSize: 30),),
                                          icon: const Icon(Icons.more_vert),

                                          /// true = 팝업메뉴 호출 가능
                                          /// false = 팝업메뉴 호출 불가능
                                          enabled: true,
                                        ),
                                      ),

 

728x90
LIST

'Flutter' 카테고리의 다른 글

Flutter에서 BLoC 패턴 제대로 이해하기  (0) 2025.03.02
Flutter 3.29 & Dart 3.7 업데이트  (1) 2025.02.27
Flutter의 렌더링 파이프라인: Build 단계 이해하기  (0) 2025.02.25
이미지 크기 조절하기: fast_image_resizer 사용법  (0) 2025.02.21
기울어지는 카드 UI 만들기 ( Flutter )  (2) 2025.02.19
'Flutter' 카테고리의 다른 글
  • Flutter에서 BLoC 패턴 제대로 이해하기
  • Flutter 3.29 & Dart 3.7 업데이트
  • Flutter의 렌더링 파이프라인: Build 단계 이해하기
  • 이미지 크기 조절하기: fast_image_resizer 사용법
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (220) N
      • Flutter (70)
      • Android (9)
      • Swift (5)
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (108) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    DART
    react
    이슈
    오늘의 개발 뉴스
    앱 개발
    플러터
    뉴스 모음
    앱개발
    오늘의 기술 뉴스
    개발 이슈
    앱
    기술 뉴스
    Flutter
    Dart 기초
    기술
    오늘의 이슈
    오늘의 뉴스
    뉴스
    개발 뉴스
    개발
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
PopupMenuButton (팝업 메뉴 버튼)
상단으로

티스토리툴바