Tinyrack

Radio Group

라디오 사이의 상호 배타적 선택을 관리해요.

라디오 사이의 상호 배타적 선택을 관리해요.

핵심 속성

속성설명
상태 관리그룹이 선택을 관리하면 defaultValue를, controlled 상태에는 valueonValueChange를 함께 사용해요. 둘 다 String?이고 모두 null이면 처음에는 아무것도 선택되지 않아요.
레이블그룹은 자체 레이블을 그리지 않아요. TRField로 감싸서 선택 항목의 이름을 붙이고 아래에 오류 메시지를 보여 주세요.
사용 가능 여부그룹 disabled는 모든 옵션을 막고, 이름 있는 그룹을 TRFormValues에서 제외해요. 그룹 readOnly는 선택 값과 포커스를 유지하면서 변경만 막아요.
name을 지정하면 선택된 문자열을 가장 가까운 TRForm에 등록하고 save()가 그 값을 알려줘요. 그룹은 FormField가 아니라서 TRForm.reset()이 값을 되돌리지 않아요. 처음 값은 직접 상태에서 복원하세요.
키보드Tab으로 그룹에 한 번 들어가면 선택된 옵션에 포커스가 놓여요. 이후에는 양쪽 축의 화살표 키와 Home, End가 포커스와 선택을 함께 옮기고, 비활성 옵션을 건너뛰며, 양 끝에서 순환해요. readOnly 그룹은 값을 바꾸지 않고 포커스만 옮겨요.

그룹이 선택 값을 들고 있고 자식은 공개 위젯인 TRRadio이므로, 각 옵션에는 고유한 value가 필요해요. 웹 컴포넌트와 달리 required 속성, 바깥 폼 연결, 내장 검증이 없어요. TRField로 감싸 보이는 레이블을 붙이고, 오류 메시지는 직접 상태에서 계산하세요.

설치

패키지를 추가한 뒤 공개 라이브러리를 가져오세요.

flutter pub add tinyrack_ui
import 'package:tinyrack_ui/tinyrack_ui.dart';

플레이그라운드

사용법

import 'package:material_ui/material_ui.dart';
import 'package:tinyrack_ui/tinyrack_ui.dart';

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

  @override
  State<DeploymentRack> createState() => _DeploymentRackState();
}

class _DeploymentRackState extends State<DeploymentRack> {
  String rack = 'alpha';

  @override
  Widget build(BuildContext context) {
    return TRField(
      label: '배포 랙',
      control: TRRadioGroup(
        name: 'rack',
        value: rack,
        onValueChange: (next) => setState(() => rack = next),
        children: const [
          TRRadio(
            value: 'alpha',
            label: TRText('알파 랙', variant: TRTextVariant.bodySm),
          ),
          TRRadio(
            value: 'beta',
            label: TRText('베타 랙', variant: TRTextVariant.bodySm),
          ),
        ],
      ),
    );
  }
}

예시

편집 가능, 읽기 전용, 비활성 그룹 고유 링크

읽기 전용 그룹은 값과 키보드 포커스를 유지하고, 비활성 그룹은 둘 다 막으면서 TRFormValues에서도 빠져요.

값 하나를 필수로 받기 고유 링크

그룹에는 required 속성이 없으니 값을 직접 제어하고 메시지를 TRField.errorText로 넘기세요.

폼에서 값 모으기 고유 링크

name을 지정하면 선택된 문자열이 가장 가까운 TRForm에 등록되고 save()로 가져올 수 있어요.

API

TRRadioGroup 속성

Prop타입 / 기본값용도
childrenList<TRRadio> · required옵션을 화면 순서이자 포커스 순서로 나열해요. 타입이 TRRadio라 그룹이 각 옵션의 valuedisabled를 읽을 수 있어요.
valueString? · null선택된 옵션을 제어해요. 값이 있으면 그룹이 스스로 선택을 바꾸지 않아요.
defaultValueString? · null제어하지 않는 그룹의 처음 선택을 정해요. 한 번만 읽으므로 나중에 바꿔도 선택이 옮겨지지 않고, value를 넘기면 쓰이지 않아요.
onValueChangeValueChanged<String>? · null탭이나 화살표 키 뒤의 다음 선택 값을 알려줘요. 변경을 취소할 수단은 없어요.
disabledbool · false모든 옵션을 비활성화하고 이름 있는 그룹을 TRFormValues에서 제외해요.
readOnlybool · false선택 값과 키보드 포커스를 유지하면서 모든 변경을 막아요.
nameString? · null선택 값을 가장 가까운 TRForm에 등록해요.