Flutter

플러터 - 동적 화면 생성

마루설아 2025. 3. 24. 20:44

플러터의 위젯 생성 시 상속받는 클래스 종류

1. StatelessWidget : 상태를 관리하지 않는 정적인 위젯

2. StatefulWidget : 상태를 관리하는 동적인 위젯

3. InheritedWidget : 여러 위젯에서 공통으로 이용할 상태 관리 위젯

 

 

동적 화면 생성 코드

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Stateful Test')),
        body: MyWidget(),
      ),
    );
  }
}

class MyWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyWidgetState();
  }
}

class _MyWidgetState extends State<MyWidget> {
  bool enabled = false;
  String stateText = "disable";

  void changeCheck() {
    // setState가 호출되어야 화면을 재빌드하여 상태값이 변경된다. 중요!
    setState(() {
      if (enabled) {
        stateText = "disable";
        enabled = false;
      } else {
        stateText = "enable";
        enabled = true;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          IconButton(
            icon:
                (enabled
                    ? Icon(Icons.check_box, size: 20)
                    : Icon(Icons.check_box_outline_blank, size: 20)),
            color: Colors.red,
            onPressed: changeCheck,
          ),
          Container(
            padding: EdgeInsets.only(left: 16),
            child: Text(
              '$stateText',
              style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),
            ),
          ),
        ],
      ),
    );
  }
}

 

 

체크박스를 클릭하면 상태가 바뀐다.

(체크 전)

 

 

(체크 후)

'Flutter' 카테고리의 다른 글

플러터 - 애셋  (0) 2025.04.01
플러터 - 위젯 키  (0) 2025.03.28
플러터 - 정적 화면 생성  (0) 2025.03.24
플러터 - 위젯 트리 구조  (0) 2025.03.22
플러터 - 다트 언어 믹스인  (0) 2025.03.22