/// 약속 (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? 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); } }