[flutter] 플러터 Checkbox 데이터 연동하기

플러터에서 Checkbox 위젯을 사용하여 사용자의 선택을 기록하고 해당 데이터를 연동하는 방법에 대해 알아보겠습니다.

Checkbox 위젯 생성하기

Checkbox 위젯은 사용자가 선택할 수 있는 옵션을 제공합니다. 다음은 Checkbox 위젯을 생성하는 간단한 예제입니다.

bool _isChecked = false;

Checkbox(
  value: _isChecked,
  onChanged: (bool? value) {
    setState(() {
      _isChecked = value!;
    });
  },
)

위의 코드에서 _isChecked 변수는 체크박스 옵션의 상태를 나타내는 불리언 값입니다. setState 함수를 사용하여 _isChecked 값이 변경될 때마다 화면이 다시 그려지도록 해줍니다.

데이터 연동하기

Checkbox의 선택 상태를 저장하고 해당 데이터를 필요한 곳에 연동하기 위해서는 일반적으로 상태 관리를 사용하는 것이 좋습니다. Flutter에서는 Provider 패키지를 사용하여 상태 관리를 할 수 있습니다. 다음은 Provider 패키지를 사용하여 Checkbox의 선택 상태를 저장하고 연동하는 예제입니다.

먼저, provider 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에서 dependencies 항목에 다음과 같이 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  provider: ^6.0.0

그리고 main.dart 파일에서 다음과 같이 Provider를 초기화합니다.

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (context) => CheckBoxProvider(),
      child: MaterialApp(
        // ...
      ),
    );
  }
}

CheckBoxProvider 클래스는 Checkbox의 선택 상태를 저장하고 변경하는 역할을 합니다. 다음과 같이 CheckBoxProvider 클래스를 작성합니다.

import 'package:flutter/foundation.dart';

class CheckBoxProvider extends ChangeNotifier {
  bool _isChecked = false;

  bool get isChecked => _isChecked;

  void setChecked(bool value) {
    _isChecked = value;
    notifyListeners();
  }
}

이제 Checkbox 위젯의 선택 상태를 CheckBoxProvider 클래스의 _isChecked 변수에 저장하고, 필요한 곳에서 사용할 수 있습니다.

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final checkBoxProvider = context.watch<CheckBoxProvider>();

    return Column(
      children: [
        Checkbox(
          value: checkBoxProvider.isChecked,
          onChanged: (bool? value) {
            checkBoxProvider.setChecked(value!);
          },
        ),
        Text('Checkbox is checked: ${checkBoxProvider.isChecked}'),
      ],
    );
  }
}

위의 코드에서 context.watch<CheckBoxProvider>()를 사용하여 CheckBoxProvider 인스턴스를 가져와서 Checkbox 위젯의 value로 사용합니다. 그리고 onChanged 콜백에서 checkBoxProvider.setChecked(value!)를 사용하여 선택 상태를 변경합니다. 이렇게 함으로써 Checkbox의 선택 상태를 CheckBoxProvider 클래스의 _isChecked 변수에 저장하고, 필요한 곳에서 사용할 수 있습니다.

마무리

이제 플러터에서 Checkbox의 선택 상태를 데이터와 연동하는 방법을 알아보았습니다. Checkbox 기능을 사용하여 사용자의 선택을 기록하고 데이터와 연동하는 것은 매우 중요합니다. 이를 통해 사용자 인터페이스를 보다 유연하게 제어할 수 있습니다.