[flutter] 플러터 프로바이더를 사용하여 라디오 버튼 만들기

플러터에서 라디오 버튼을 만들기 위해 프로바이더(Provider)를 사용하는 방법에 대해 알아보겠습니다.

프로바이더(Provider) 패키지 추가

먼저, pubspec.yaml 파일에 provider 패키지를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  provider: ^5.0.0

이후 pub get 명령어를 실행하여 패키지를 가져옵니다.

모델 클래스 생성

라디오 버튼에서 선택할 옵션을 나타내는 모델 클래스를 생성합니다.

class RadioButtonModel {
  final String id;
  final String text;

  RadioButtonModel({required this.id, required this.text});
}

프로바이더 클래스 생성

선택된 라디오 버튼 옵션을 관리할 프로바이더 클래스를 생성합니다.

import 'package:flutter/material.dart';

class RadioButtonProvider extends ChangeNotifier {
  RadioButtonModel? _selectedOption;

  set selectedOption(RadioButtonModel? option) {
    _selectedOption = option;
    notifyListeners();
  }

  RadioButtonModel? get selectedOption => _selectedOption;
}

라디오 버튼 위젯 생성

프로바이더를 사용하여 라디오 버튼을 생성합니다.

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class RadioButtonWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Consumer<RadioButtonProvider>(
      builder: (context, radioButtonProvider, child) => Column(
        children: radioButtonOptions
            .map(
              (option) => RadioListTile(
                title: Text(option.text),
                value: option,
                groupValue: radioButtonProvider.selectedOption,
                onChanged: (selected) {
                  radioButtonProvider.selectedOption = selected as RadioButtonModel?;
                },
              ),
            )
            .toList(),
      ),
    );
  }
}

List<RadioButtonModel> radioButtonOptions = [
  RadioButtonModel(id: '1', text: 'Option 1'),
  RadioButtonModel(id: '2', text: 'Option 2'),
  RadioButtonModel(id: '3', text: 'Option 3'),
];

위와 같이 프로바이더를 사용하여 라디오 버튼을 만들면, 상태 관리가 간편해지고 유연한 애플리케이션을 구축할 수 있습니다.