포스트

StatefulWidget ElevatedButton & Switch widget

main 사진

오늘은 StatefulWidget을 좀 더 익숙해지기 위해서 기초적인 연습을 하려고 합니다.

1️⃣ Switch 위젯으로 모든 위젯 색상 변경하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({
    Key? key,
  }) : super(key: key);

  @override
  State<StatefulWidget> createState() => _MyApp();
}

class _MyApp extends State<MyApp> {
  var switchValue = false;
  String test = "hello";
  Color _color = Colors.blue;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      darkTheme: ThemeData.light(),
      home: Scaffold(
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Switch(
                value: switchValue,
                onChanged: (value) {
                  switchValue = value;
                  print(value);
                  print(_color.toString());
                  if (value == true) {
                    setState(() {
                      _color = Colors.amber;
                    });
                  }
                  if (value == false) {
                    setState(() {
                      _color = Colors.blue;
                    });
                  }
                },
              ),
              ElevatedButton(
                child: Text('$test'),
                style: ElevatedButton.styleFrom(
                  primary: _color, // Background color
                ),
                onPressed: () {
                  if (test == 'hello') {
                    setState(() {
                      test = 'flutter';
                    });
                  } else {
                    setState(() {
                      test = 'hello';
                    });
                  }
                  print('$test');
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}



‘Switch’를 누르면 전체 색상이 변경이 되고 ‘ElevatedButton’를 누르면 버튼의 텍스트가 변경되게 했습니다.

1. 스위치로 색상 변경

var switchValue = false;,Color _color = Colors.blue;을 선언하였고 스위치를 누르면 onChanged: (value)를 통해 value값이 변경됩니다.
그래서 switchValue = value;을 ‘onChanged’안에 선언해주어 값이 변경되게 해주었습니다.
setState로 상테 변경을 해주었는데 if (value == true)조건에 충족되면 Color _color = Colors.blue;에서 Color _color = Colors.amber;로 변경하게 했습니다.

2. 버튼으로 텍스트 변경

String test = "hello";로 처음에 선언을 하였고 이제 ‘ElevatedButton’의 ‘onPressed’에서 버튼을 눌렀을때 어떻게 할것인 지에 대해 작성하면 됩니다.
저는 조건을 if (test == 'hello')이면 setState에서 test = 'flutter';으로 값을 변경하였습니다. 그러면 버튼을 클릭했을 때 ‘hello’에서 ‘flutter’로 변경됩니다.
그럼 다시 ‘flutter’에서 ‘hello’로 변경하려면 똑같이 else이면 setState에서 test = ‘hello’;으로 값을 변경하여 버튼을 누를때 마다 텍스트가 변경되게 하였습니다.


2️⃣ ElevatedButton으로 모든 위젯 색상 변경하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({
    Key? key,
  }) : super(key: key);

  @override
  State<StatefulWidget> createState() => _MyApp();
}

class _MyApp extends State<MyApp> {
  var switchValue = false;
  String test = "hello";
  Color _color = Colors.blue;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      darkTheme: ThemeData.light(),
      home: Scaffold(
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Switch(
                value: switchValue,
                onChanged: (value) {
                  switchValue = value;
                  print(value);
                  print(_color.toString());
                  if (value == true) {
                    setState(() {
                      _color = Colors.amber;
                    });
                  }
                  if (value == false) {
                    setState(() {
                      _color = Colors.blue;
                    });
                  }
                },
              ),
              ElevatedButton(
                child: Text('$test'),
                style: ElevatedButton.styleFrom(
                  primary: _color, // Background color
                ),
                onPressed: () {
                  if (test == 'hello') {
                    setState(() {
                      test = 'flutter';
                      _color = Colors.blue;
                      switchValue = false;
                    });
                  } else {
                    setState(() {
                      test = 'hello';
                      _color = Colors.amber;
                      switchValue = true;
                    });
                  }
                  print('$test');
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

‘ElevatedButton’의 ‘onPressed’에서 _colorswitchValue의 값을 변경하여 버튼을 눌렀을때 스위치가 켜지고 색도 변경이 됩니다.


🧐 오늘의 소감은?

오늘의 소감은 플러터의 기초를 조금씩 잡고 있는다고 생각했는데 아직 멀었다는게 느껴지네요 바로 뚝딱 만들어지지 않고 좀 이건가 저건가 하면서 했던 것 같아요. 벌써 프로그래밍을 접한지 반년이 되어가는데 아직 준비가 안된 것 같네요ㅠㅠ 나중에 쫓기듯이만 남하면 될 것같은데 제 자신을 좀 더 굴려서 열심히 하게 햐야겠어요! 힘내보아요 😤😤

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.