CheckBox, SnackBar

tpids·2024년 9월 12일

Flutter

목록 보기
18/40
post-thumbnail
import 'package:flutter/material.dart';

// stf 단축키를 사용하여 클래스를 생성한다
class ExCheck extends StatefulWidget {
  const ExCheck({super.key});

  @override
  State<ExCheck> createState() => _ExCheckState();
}

class _ExCheckState extends State<ExCheck> {
  // 변수로 사용할수 있는 내용!
  // bool isChecked1 = false;
  // bool isChecked2 = false;

  List<bool> isCheckeds = [false, false, false];

  @override
  Widget build(BuildContext context) {
    // build 메소드는 화면의 UI를 작성하는 메소드로
    // 변수를 무조건 상수처럼 사용한다!

    return Scaffold(
      body: SafeArea(
          // checkbox는 true/false 값으로 체크값을 판단한다!
          child: Column(
            children: [
              Row(
                children: [
                  Text("첫번째 항목"),
                  Checkbox(value: isCheckeds[0], onChanged: (value) {
                    // 상태를 체크할 수 있는 메소드 호출!
                    setState(() {
                      isCheckeds[0] = value!;
                    });
                  }),
                ],
              ),

              Row(
                children: [
                  Text("두번째 항목"),
                  Checkbox(value: isCheckeds[1], onChanged: (value) {
                    // 상태를 체크할 수 있는 메소드 호출!
                    setState(() {
                      isCheckeds[1] = value!;
                    });
                  }),
                ],
              ),

              CheckboxListTile(
                  title: Text('세번째 항목', style: TextStyle(fontWeight: FontWeight.bold),),
                  subtitle: Text('subtitle'),
                  controlAffinity: ListTileControlAffinity.leading, // 체크박스를 맨앞으로 이동, 기본값은 맨뒤
                  activeColor: Colors.blue,
                  value: isCheckeds[2], onChanged: (value){
                setState(() {
                  isCheckeds[2] = value!;
                  
                  // 체크박스가 선택되면 해당 항목을 가져올수 있는 snack Bar 사용!
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('세번째 항목')),
                  );
                  
                });
              })

            ],
          )),
    );
  }
}

profile
개발자

0개의 댓글