JJ_MKVMaker/lib/ui/jj_chip.dart

38 lines
1.6 KiB
Dart

/// 약속 (W 공용 위젯, 설계 7-2 JjChip): 고르기 칩 하나.
/// 입력: 이름 · 고름 · 누름 알림 (null 이면 누를 수 없음) · 아이콘 (있으면) · 여럿 고르기 ([multi]) · 이름 글꼴.
/// 출력: 아이콘이 없으면 Material 처음 꼴 (고르면 앞에 ✓). 아이콘이 있으면 고를 때 그 자리에 ✓ 만 (그림 위에 체크가 겹치지 않게 - 62ba78d).
/// [multi] 면 FilterChip (여럿 켜고 끄기 - 목록은 core/picked_list 의 withPicked), 아니면 ChoiceChip (하나 고르기). 오류 없음.
/// 쓰는 곳: 화면 · 색 보정 · 압축 · 찾기 · 일정 · 저장 공간 · 보기 · 정리 · 받기 설정 · 즐겨찾기 등. 화면은 부르기만 한다
library;
import 'package:flutter/material.dart';
class JjChip extends StatelessWidget {
const JjChip({
super.key,
required this.label,
required this.selected,
required this.onSelected,
this.icon,
this.multi = false,
this.style,
});
final String label;
final bool selected;
final ValueChanged<bool>? onSelected;
final IconData? icon;
final bool multi;
final TextStyle? style;
@override
Widget build(BuildContext context) {
final text = Text(label, style: style);
final avatar = icon == null ? null : Icon(selected ? Icons.check : icon, size: 16);
final check = icon == null;
return multi
? FilterChip(label: text, avatar: avatar, showCheckmark: check, selected: selected, onSelected: onSelected)
: ChoiceChip(label: text, avatar: avatar, showCheckmark: check, selected: selected, onSelected: onSelected);
}
}