[Flutter] StatelessWidget 및 StatefulWidget

8478 단어 Flutterapptech
  • Widget이 States Widget에 속하는지 Stateful Widget
  • 에 속하는지
  • Stateless는 변하지 않는 Widget입니다
  • Stateful은 변경된 Widget입니다.사용자의 상호작용에 따라 달라진다.예를 들어 라디오, 체크박스 등이 바로 그것이다
  • Widget 상태를 State라는 객체에 저장하여 모양새와 별도로 관리
  • State는 변화 대상의 값이 있고 변화 알림setState이 있는 방법
  • setState를 호출하면 프레임을 대상으로 StatefulWidget
  • 을 다시 그립니다.

    StatefulWidget 만들기

  • 독특한 Stateful Widget을 직접 제작할 수 있습니다
  • 이때 할 게 두 개 있다
  • StatefulWidget의 클래스를 계승
  • State의 클래스를 상속
  • StatefulWidget 클래스

  • 상속 StatefulWidget의 클래스 정의
  • StatefulWidgetcreateState방법으로 오버라이드
  • 진행
  • createState() State 객체 반환
  • next로 말하자면 감각은 useState
  • 에 해당한다
    class FavoriteWidget extends StatefulWidget {
      
      _FavoriteWidgetState createState() => _FavoriteWidgetState();
    }
    

    State 등급

  • 상속 State의 클래스 정의
  • 상속 시 State 클래스에서Generic가 직접 제작한 StatefulWidget
  • 을 지정한다.
  • 인스턴스 변수를 사용하여 State를 통해 관리할 값을 보유합니다
  • .
  • State는 build 방법이 있기 때문에 오버라이드를 통해 UI를 정의한다
  • State에 액세스할 수 있는 값
  • class _FavoriteWidgetState extends State<FavoriteWidget> {
      bool _isFavorited = true;
      int _favoriteCount = 41;
    
      
      Widget build(BuildContext context) {
        return Row(
          mainAxisSize: MainAxisSize.min,
          children: [
            Container(
              padding: EdgeInsets.all(0),
              child: IconButton(
                padding: EdgeInsets.all(0),
                alignment: Alignment.centerRight,
                icon: (_isFavorited ? Icon(Icons.star) : Icon(Icons.star_border)),
                color: Colors.red[500],
                onPressed: _toggleFavorite,
              ),
            ),
            SizedBox(
              width: 18,
              child: Container(
                child: Text('$_favoriteCount'),
              ),
            ),
          ],
        );
      }
    }
    
  • State 값을 변경하는 방법 추가
  • void _toggleFavorite() {
      setState(() {
        if (_isFavorited) {
          _favoriteCount -= 1;
          _isFavorited = false;
        } else {
          _favoriteCount += 1;
          _isFavorited = true;
        }
      });
    }
    
  • setState 방법을 호출하여 State의 값을 변경
  • 변경된 값으로 StatefulWidget
  • 다시 그리기
  • 이러한 상태를 가진 작은 위젯을 독자적으로 정의하고 사용자의 조작에 따라 상태를 바꾸면 상호작용을 만들 수 있다
  • 좋은 웹페이지 즐겨찾기