반응형

들어가며

Container 위젯이란?

  • Container 위젯은 다양한 방법으로 다른 위젯을 조합하여 구성할 수 있는 위젯이다.
  • 이 위젯은 다른 위젯을 포함하고 그 위젯들의 배치, 스타일링, 영역 사이즈 등을 결정하는데 사용된다.

Container 위젯 속성

  • child: 컨테이너에 포함될 자식 위젯
  • width: 컨테이너의 너비를 지정
  • height: 컨테이너의 높이를 지정합니다.
  • alignment: 자식 위젯의 정렬을 지정. 기본값은 Alignment.center
  • margin: 컨테이너 주위의 외부 여백을 지정. EdgeInsets 객체 사용.
  • padding: 컨테이너의 내부 여백을 지정. EdgeInsets 객체 사용.
  • color: 컨테이너의 배경색을 지정
  • decoration: 컨테이너의 장식을 지정. 배경색, 테두리, 그림자 등을 포함할 수 있다.
  • constraints: 컨테이너의 크기 제약을 지정. 최소/최대 너비, 최소/최대 높이 등을 설정할 수 있다.
  • transform: 컨테이너의 변형을 지정. 이동, 회전, 크기 조절 등을 지정할 수 있다.

EdgeInsets란?

  • EdgeInsets는 여백(간격)을 나타내는 클래스이다.
  • EdgeInsets.all(double value): 네 방향으로 동일한 값의 여백을 지정.
  • EdgeInsets.only({double left, double top, double right, double bottom}): 각 방향별로 개별적으로 여백을 지정.
  • EdgeInsets.symmetric({double vertical, double horizontal}): 상하 또는 좌우 방향으로만 동일한 값의 여백을 지정.

예제

main.dart

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Container Example',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Container Example'),
        ),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Container(
              width: 150,
              height: 150,
              color: Colors.blue,
              alignment: Alignment.bottomRight,
              margin: const EdgeInsets.symmetric(
                vertical: 10,
                horizontal: 30,
              ),
              padding: const EdgeInsets.all(20),
              child: const Text(
                'Hello!',
                style: TextStyle(color: Colors.white),
              ),
            ),
            Row(
              children: [
                Container(
                  width: 100,
                  height: 100,
                  margin: const EdgeInsets.all(10),
                  decoration: BoxDecoration(
                    color: Colors.green,
                    border: Border.all(color: Colors.greenAccent, width: 10),
                    // 테두리
                    borderRadius: BorderRadius.circular(20),
                    boxShadow: [
                      BoxShadow(
                        color: Colors.grey.withOpacity(0.5),
                        spreadRadius: 5,
                        blurRadius: 7,
                        offset: const Offset(0, 3),
                      ),
                    ],
                  ),
                ),
                Container(
                  width: 100,
                  height: 100,
                  margin: const EdgeInsets.all(10),
                  decoration: const BoxDecoration(
                    gradient: LinearGradient(
                      begin: Alignment.topCenter,
                      end: Alignment.bottomCenter,
                      colors: [Colors.blue, Colors.green], // 그라디언트 색상
                    ),
                  ),
                ),
                Container(
                  width: 100,
                  height: 100,
                  margin: const EdgeInsets.all(10),
                  decoration: const BoxDecoration(
                    image: DecorationImage(
                      image: NetworkImage('https://upload.wikimedia.org/wikipedia/commons/1/17/Google-flutter-logo.png'),
                      fit: BoxFit.cover,
                    ),
                  ),
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}

화면

반응형

'Development > Flutter' 카테고리의 다른 글

[Flutter] ListView/ListTile  (0) 2024.02.18
[Flutter] Colum/Row  (1) 2024.02.18
[Flutter] Icon  (0) 2024.02.18
[Flutter] Button  (1) 2024.02.18
[Flutter] Text  (0) 2024.02.18

+ Recent posts