카테고리 없음

[Flutter] const Constructor

고쩡이 2023. 11. 6. 14:19

const : 단 한 번 build하면 다음에 실행할때는 이미 그려놨던 위젯을 재실행하지 않는다.

📄Main.dart

import 'package:flutter/material.dart';
import 'package:u_and_i/screen/home_screen.dart';

void main() {
  runApp(
    const MaterialApp(
      home: HomeScreen(),
    ),
  );
}

📄screen/home_screen.dart

import 'package:flutter/material.dart';

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

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SizedBox(
        width: MediaQuery.of(context).size.width,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const TestWidget(label: 'test1'), // 빌드타임에 모든 값을 알 수 있을때
            const TestWidget(label: 'test2'),
            ElevatedButton(
              onPressed: () {
                setState(() {}); // setState -> build 다시 실행
              },
              child: const Text("빌드!"),
            )
          ],
        ),
      ),
    );
  }
}

class TestWidget extends StatelessWidget {
  final String label;
  const TestWidget({required this.label, Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    print('$label build 실행');
    return SizedBox(
      child: Text(
        label,
      ),
    );
  }
}

 

강의 출처 인프런 [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!