AlertDialog
명시적인 선택이 필요한 모달에서 위험하거나 되돌릴 수 없는 작업을 확인해요.
명시적인 선택이 필요한 모달에서 위험하거나 되돌릴 수 없는 작업을 확인해요.
핵심 속성
| 속성 | 설명 |
|---|---|
| 액션 | TRButton만 전달하고 가장 안전한 액션부터 가장 위험한 액션 순서로 배치해요. |
| 닫기 | 배경 탭은 차단하며 Escape와 시스템 뒤로 가기는 route를 닫아요. |
| 결과와 포커스 | Navigator.pop은 타입 있는 결과를 반환하고 포커스는 연 컨트롤로 돌아가요. |
| 넘침 | 본문 콘텐츠를 그대로 넘기세요. AlertDialog가 액션을 보이게 유지하고 문자 방향에 따른 표면 끝에서 넘치는 본문을 스크롤해요. |
취소는 neutral outline, 위험한 확인은 TRIntent.danger를 사용하세요.
설치
패키지를 추가한 뒤 공개 라이브러리를 가져오세요.
flutter pub add tinyrack_uiimport 'package:tinyrack_ui/tinyrack_ui.dart';플레이그라운드
사용법
import 'package:material_ui/material_ui.dart';
import 'package:tinyrack_ui/tinyrack_ui.dart';
Widget deleteRackButton(BuildContext context, VoidCallback onDelete) {
return TRButton(
intent: TRIntent.danger,
onPressed: () async {
final confirmed = await showTRAlertDialog<bool>(
context: context,
builder: (dialogContext) => TRAlertDialog(
title: const Text('랙을 삭제할까요?'),
description: const Text('이 작업은 되돌릴 수 없어요.'),
actions: [
TRButton(
appearance: TRAppearance.outline,
onPressed: () => Navigator.pop(dialogContext, false),
child: const Text('취소'),
),
TRButton(
intent: TRIntent.danger,
onPressed: () => Navigator.pop(dialogContext, true),
child: const Text('랙 삭제'),
),
],
),
);
if (confirmed == true) onDelete();
},
child: const Text('랙 삭제'),
);
}예시
위험한 작업 확인 고유 링크
안전한 취소 액션을 먼저, danger 확인 액션을 마지막에 배치하세요. route는 Navigator.pop에 전달한 타입 있는 값을 반환해요.
레이블, 비활성 상태와 포커스 고유 링크
폭이 좁으면 긴 레이블이 줄바꿈되고 비활성 트리거는 route를 열지 않아요. Escape 또는 취소로 닫으면 포커스가 트리거로 돌아가요.
긴 본문 고유 링크
AlertDialog도 넘치는 본문의 스크롤을 소유하므로 호출부는 스크롤 뷰를 중첩하지 않고 콘텐츠를 그대로 전달해요. 결정 액션은 소프트웨어 키보드 위에 계속 보여요.
API
TRAlertDialog
| Prop | 타입 / 기본값 | 용도 |
|---|---|---|
actions | List<TRButton> = const [] | 토큰 간격, 줄바꿈과 끝 정렬을 적용할 버튼 목록이에요. |
showTRAlertDialog<T>
| Prop | 타입 / 기본값 | 용도 |
|---|---|---|
route options | useSafeArea, useRootNavigator, requestFocus, routeSettings, anchorPoint | safe area 배치, navigator 소유권, 초기 포커스, route 메타데이터와 폴더블 기준점을 제어해요. |