상세 컨텐츠

본문 제목

13. const constructor (flutter)

카테고리 없음

by 본투비곰손 2023. 10. 4. 22:52

본문

728x90

onst 값을 알 수 있어서 함수에 const를 사용하게 되면 빌드를 재 실행 하여도 const를 사용한 함수는 다시 실행되지 않는다.

import 'package:flutter/material.dart';

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

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

class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        width: MediaQuery.of(context).size.width,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const TestWidget(label: 'test1'),
            const TestWidget(label: 'test2'),
            ElevatedButton(
              onPressed: () {
                setState(() {});
              },
              child: const Text('빌드!'),
            )
          ],
        ),
      ),
    );
  }
}

class TestWidget extends StatelessWidget {
  final String label;

  const TestWidget({required this.label, super.key});

  @override
  Widget build(BuildContext context) {
    print('$label build 실행!');
    return Container(
      child: Text(
        label,
      ),
    );
  }
}
const를 사용하지 않으면 빌드를 재 실행 할 때마다 함수가 모두 실행 된다.

const를 사용하면 해당 함수는 빌드 재 실행 시 실행되지 않는다.

모든 값을 알고 있다고 가정했을 때 const를 사용하면 리소스를 절약할 수 있다.

padding Widget

상, 하, 좌, 우에 공간을 지정하는 위젯

  1. EdgeInsets.all상, 하, 좌, 우 모두 같은 값으로 공간을 생성
Padding(
  padding: const EdgeInsets.all(8.0)
)

2. EdgeInsets.fromLTRB 상, 하, 좌, 우 값을 지정하여 공간을 생성

Padding(
  padding: const EdgeInsets.fromLTRB(10, 5, 5, 10),
)

3. EdgeInsets.symmetric 상, 하 같은 값, 좌, 우 같은 값을 지정하여 공간을 생성

padding: const EdgeInsets.symmetric(
            horizontal: 8, //좌, 우
            vertical: 10, // 상, 하
          ),

Map 함수 실전 적용 !

void main() {
  final number='123';
  
  print(number.toString().split('').map((x)=>'$x.jpg').toList());
  
  final numbers= [
    123,
    456,
    789,
  ];
  
  print(
    numbers.map(
      (x)=>x.toString().split('').map(
        (y)=>'$y.jpg',
      ).toList()
    ).toList()
  );
}
728x90