์žฌ๋ฐŒ๋Š”๊ฑฐ๐ŸŒˆ

Flutter_13. Stateful, Switch, setState, Button ๋ณธ๋ฌธ

๊ฐœ๋ฐœํ•˜๊ธฐ/Flutter Start

Flutter_13. Stateful, Switch, setState, Button

uraon 2023. 5. 6. 07:00
728x90
๋ฐ˜์‘ํ˜•

์Šค์œ„์น˜๋Š” ์Šค์œ„์น˜์˜ ๊ฐ’์„ ์•Œ๊ณ  ์žˆ์„ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ž์„ธํ•œ ์†Œ๊ฐœ๋Š” ์•„๋ž˜ ๋งํฌ ์ฐธ๊ณ  :)

 

https://api.flutter.dev/flutter/material/Switch-class.html

 

Switch class - material library - Dart API

A Material Design switch. Used to toggle the on/off state of a single setting. The switch itself does not maintain any state. Instead, when the state of the switch changes, the widget calls the onChanged callback. Most widgets that use a switch will listen

api.flutter.dev

 

 

 

 

Switch, setState

 

 

 

1) ์Šค์œ„์น˜ ๋ณ€์ˆ˜ late๋กœ ์„ ์–ธํ•˜๊ณ , initState์—์„œ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •

 

 

2) body์— Switch ์ถ”๊ฐ€ํ•ด๋ณด๊ธฐ

Switch(
    value: ์Šค์œ„์น˜ ์ƒํƒœ๊ฐ’ ๋ณ€์ˆ˜,
    onChanged: (value){
      ์Šค์œ„์น˜ ์ƒํƒœ๊ฐ’ ๋ณ€์ˆ˜ = value;
    }
)

 

 

 

3) ํ™”๋ฉด ํ™•์ธ - ์Šค์œ„์น˜๋ฅผ ํด๋ฆญํ•ด๋„ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค!!!!!!!!

 

 

4) ์Šค์œ„์น˜ ํด๋ฆญ ํ• ๋•Œ setState

 

 

 

5) ๋‹ค์‹œ ์ €์žฅํ•˜๊ณ  ํ™”๋ฉด ํ™•์ธ - ํด๋ฆญํ•˜๋ฉด ON/OFF๊ฐ€ ์ž˜ ์ €์žฅ๋˜์–ด ์ถœ๋ ฅ๋จ!

 

 

 

 

 

Switch, Button Color Change

 

 

1) ์ „์—ญ ๋ณ€์ˆ˜ late ์„ ์–ธ ๋ฐ initState()

๋ฒ„ํŠผ ํด๋ฆญ ๋˜๋Š” ์Šค์œ„์น˜ ํด๋ฆญ ํ•  ๋•Œ ๋งˆ๋‹ค ๋ฒ„ํŠผ ์นผ๋ผ ๋ณ€๊ฒฝํ•˜๊ธฐ
- Color ํƒ€์ž…์˜ ๋ฒ„ํŠผ ์นผ๋ผ ๋ณ€์ˆ˜ ์„ ์–ธ
- bool ํƒ€์ž…์œผ๋กœ ์Šค์œ„์น˜์™€ ๋ฒ„ํŠผ ์ƒํƒœ ๋ณ€์ˆ˜ ์„ ์–ธ

 

 

2) ํ™”๋ฉด ์…‹ํŒ… - ๋ฒ„ํŠผ๊ณผ ์Šค์œ„์น˜ ์ถ”๊ฐ€

 

 

3) ํ•จ์ˆ˜ onClick()

๋ฒ„ํŠผ์„ ํด๋ฆญ ํ•  ๋•Œ๋งˆ๋‹ค, ๋ฒ„ํŠผ์˜ ์ƒํƒœ๋ฅผ true/false๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.
๊ทธ ์ €์žฅ ๊ฐ’์„ Switch์— ์‚ฌ์šฉ๋˜๋Š” onChanged ํ•จ์ˆ˜์— ๊ฐ™์ด ๋ณด๋‚ด์ค€๋‹ค.
    // --- Function ---
    _onClick(){
        if(_buttonState){
            _buttonState = false;
        }else{
            _buttonState = true;
        }
    _onChanged(_buttonState);
}

 

 

4) ํ•จ์ˆ˜ onChanged(_buttonState)

onChange์—์„œ๋Š” ๋ฒ„ํŠผ ์ƒํƒœ๊ฐ’์„ ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ’์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์Šค์œ„์น˜์˜ ์ƒํƒœ๊ฐ’์— ๋”ฐ๋ผ ๋ฒ„ํŠผ ์นผ๋ผ๋ฅผ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.
๐ŸŒˆ ์Šค์œ„์น˜ ํ™”๋ฉด์ถœ๋ ฅ๊ณผ ๋ฒ„ํŠผ์˜ ์นผ๋ผ๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•จ์œผ๋กœ setState ํ•„์š”! ๐ŸŒˆ
    // --- Function ---
    _onChanged(bool value){
        setState(() {
            _switchValue = value;
            if(_switchValue){
                _buttonColor = Colors.red;
            }else{
                _buttonColor = Colors.blue;
            }
        });
    }

 

 

 

5) ํ™”๋ฉด ํ™•์ธ

- ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์Šค์œ„์น˜๋„ ๊ณ„์† on/off
- ์Šค์œ„์น˜๊ฐ€ off์ผ ๊ฒฝ์šฐ, ๋ฒ„ํŠผ์˜ ์นผ๋ผ๋Š” blue
- ์Šค์œ„์น˜๊ฐ€ on์ผ ๊ฒฝ์šฐ, ๋ฒ„ํŠผ์˜ ์นผ๋ผ๋Š” red

 

 

๋ฐ˜์‘ํ˜•

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•