[Flutter_study] Section 7 review
Flutter

[Flutter_study] Section 7 review

728x90

● Expanded class

: 수평, 수직 공간을 최대한 채우려고함

 

● Button 종류/사용법

https://flutter.dev/docs/development/ui/widgets/material#Buttons

 

Material Components widgets

 

flutter.dev

 

● StatefulWidget VS StatelessWidget

 

- StatefulWidget

: 버튼을 누르거나 터치했을 때 화면에 변경된 내용을 표시할 수 있는 위젯

  • createState()
    상태를 생성.
  • build()
    위젯을 화면에 표시하는 메서드
    화면에 표시할 위젯을 반환 해야한다
  • setState()
    위젯의 상태를 갱신
    이 메서드를 실행하면 위젯을 처음부터 다시 만들지만 initState() 메서드는 호출되지 않음
    데이터가 변경되었음을 프레임워크에 알리는데 사용되며 build context의 위젯을 다시 빌드하게 함

- StatelessWidget

  • 화면 표시용 위젯
  • 위젯이 로딩되어 화면에 표시되면, 사용자 이벤트나 동작이 있어도 내용을 변경할 수 없는 위젯
  • Stateless 위젯을 만들기 위해서는 먼저 StatelessWidget 클래스를 상속하고 build() 메서드에서 원하는 위젯을 반환
  • 안드로이드 스튜디오에서 stless치고 나오는 자동완성을 하면 자동으로 완성됨

[참고]

https://velog.io/@cpcp127/Flutter-Stateless-Stateful-%EC%9C%84%EC%A0%AF

 

● 주사위 앱 소스코드

 

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
import 'dart:math';
 
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
 
void main() {
  return runApp(
    MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.red,
        appBar: AppBar(
          title: Text('Dicee'),
          backgroundColor: Colors.red,
        ),
        body: DicePage(),
      ),
    ),
  );
}
 
//상태 저장 위젯
class DicePage extends StatefulWidget {
  @override
  _DicePageState createState() => _DicePageState();
}
 
class _DicePageState extends State<DicePage> {
  var leftDiceNumber=1;
 
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Row(
        children: <Widget>[
          Expanded(
            child: FlatButton(
              onPressed: (){
                setState((){
                  leftDiceNumber=Random().nextInt(6+1;
                  print('diceNumber = $leftDiceNumber');
                });
              },
              child: Image.asset('images/dice$leftDiceNumber.png'),
            ),
          ),
          Expanded(
            child: FlatButton(
              onPressed: (){
                print('Right button got pressed. ');
              },
              child: Image.asset('images/dice1.png'),
            ),
          ),
        ],
      ),
    );
  }
}
cs

 

● 실행 결과

실행결과

728x90

'Flutter' 카테고리의 다른 글

[Flutter] 구글맵 API 사용하기-2  (0) 2021.05.25
[Flutter] 구글맵 API 사용하기  (0) 2021.05.24
[Flutter_study] Section 6 review  (0) 2021.05.18
[Flutter_study] Section 5~6 review  (0) 2021.05.18
[Flutter_study] Section 1~4 review  (0) 2021.05.15