Tinyrack

Switch

즉시 적용되는 켬/끔 설정을 전환해요.

즉시 적용되는 켬/끔 설정을 전환해요.

핵심 속성

속성설명
상태checked를 넘기면 값을 직접 제어하고, 넘기지 않으면 falsedefaultChecked에서 시작해 스스로 관리해요. 두 방식 모두 onCheckedChange로 다음 값을 알려줘요.
사용 가능 여부readOnly는 변경은 막지만 포커스와 키보드 접근은 남겨요. disabled는 변경을 막고 보조 기술에 사용할 수 없는 상태로 알려요. 둘 다 현재 값은 그대로 보여줘요.
레이블스위치는 자체 레이블을 그리지 않아요. 옆에 보이는 텍스트를 두고 같은 문구를 semanticLabel에 넘기지 않으면 접근 가능한 이름이 비어요. 포커스된 편집 가능한 스위치는 Space 키를 뗄 때 전환돼요.
검증invalid는 위험을 알리는 테두리만 그려요. 오류 텍스트 자리도 폼 필드 래퍼도 없으니 메시지를 직접 그리고 invalid도 직접 해제하세요.

전환하는 즉시 설정이 적용될 때 스위치를 쓰세요. 값을 모아서 폼과 함께 제출한다면 체크박스를 쓰세요. TRSwitchname이나 value, required를 받지 않아서 제출할 값은 직접 관리하는 상태에서 읽어야 해요. 크기 변형도 없어요.

설치

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

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 BackupSetting extends StatefulWidget {
  const BackupSetting({super.key});

  @override
  State<BackupSetting> createState() => _BackupSettingState();
}

class _BackupSettingState extends State<BackupSetting> {
  bool enabled = false;

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisSize: MainAxisSize.min,
      spacing: TRSpacing.small,
      children: [
        TRSwitch(
          checked: enabled,
          onCheckedChange: (next) => setState(() => enabled = next),
          semanticLabel: '자동 백업',
        ),
        const TRText('자동 백업'),
      ],
    );
  }
}

예시

제어형 설정 고유 링크

값을 `checked`로 들고 `onCheckedChange`에서 갱신하면 설정을 다른 UI에도 반영할 수 있어요. 스위치 옆에 보이는 텍스트를 두고 같은 문구를 `semanticLabel`에도 넘기세요.

편집 가능, 읽기 전용, 사용 불가 고유 링크

`readOnly`는 포커스와 키보드 접근은 남기고 변경만 막아요. `disabled`도 변경을 막고 보조 기술에는 사용할 수 없는 상태로 알려요. 둘 다 현재 값은 그대로 보여줘요.

필수 설정과 복구 고유 링크

`invalid`는 위험을 알리는 테두리만 그려요. `TRSwitch`에는 오류 텍스트 자리도 폼 검증도 없으니 메시지는 직접 그리고, 설정이 켜지면 둘 다 함께 해제하세요.

API

상태와 사용 가능 여부

Prop타입 / 기본값용도
checkedbool? · null값을 제어해요. 값이 있으면 위젯이 스스로 상태를 바꾸지 않아요.
defaultCheckedbool · false제어하지 않는 스위치의 처음 값을 정해요. checked를 넘기면 쓰이지 않아요.
onCheckedChangeValueChanged<bool>? · null탭이나 Space 이후의 다음 값을 알려줘요. 변경을 취소할 수단은 없어요.
disabledbool · false포인터와 키보드 조작을 막고 보조 기술에 비활성 상태로 알려요.
readOnlybool · false변경은 막지만 포커스는 받을 수 있고 보조 기술에는 평소의 활성 상태로 알려요.
invalidbool · false위험을 알리는 테두리를 그려요. 동작을 바꾸거나 오류를 알리지는 않아요.

이름과 포커스, 조합

Prop타입 / 기본값용도
semanticLabelString? · null보조 기술에 스위치 이름을 알려요. 스위치는 자체 레이블을 그리지 않으므로 이 값이 없으면 접근 가능한 이름이 비어요.
focusNodeFocusNode? · null직접 만든 포커스 노드를 넘겨요. 넘기지 않으면 스위치가 내부 노드를 만들고 정리해요.
autofocusbool · false스위치가 트리에 처음 들어갈 때 포커스를 요청해요.
thumbKeyKey? · null움직이는 손잡이를 식별해 테스트와 도구가 위치와 크기를 측정할 수 있게 해요.