inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Column의 가로(crossAxis) 크기 관련

324

ryan817708

작성한 질문수 1

0

영상에서 의문이 드는 부분이 있어서 문의드립니다.
제가 제대로 공부하지 않고 질문드리는 것일 수도 있어서 걱정되네요..

Container(
        color: Colors.black,
        width: MediaQuery.of(context).size.width,
        child: Column(
               ...
        ),
      )

에서 Containerwidth를 변경한 것인데 왜 Column의 가로크기가 변한 건가요?..

저는 width를 늘리면,화면만 검정색으로 칠해지고 Column 영역을 같을 것이라 생각했습니다.

ColumncrossAxis는 부모 위젯에 종속적이여서 그런건가요?

하지만 만약 그렇다면 자식의 크기가 부모 위젯에 종속적이라면 Scaffold 영역 크기는 화면 전체이기 때문에

Scaffold(
      backgroundColor: Colors.black,
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Container(
            color: Colors.yellow,
            height: 50,
            width: 50,
          )
        ],
      ),
    );

이런 코드의 Column의 가로 길이는 화면 전체의 가로 길이여야 하는게 아닌가요..

Flutter 클론코딩

답변 1

0

코드팩토리

안녕하세요!

좋은 질문입니다.

Column과 Row는 원래 반대축에서 최대 크기를 차지하려는 습성이 있습니다.

주축은 mainAxisSize로 변경이 가능한 사항이지만 반대축은 불가합니다.

Scaffold와 Container의 차이는 최소 크기에 있습니다.

아래 코드를 이용해서 최소 크기를 출력해보면 Scaffold의 높이와 너비가 모두 0이 나옵니다.

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: LayoutBuilder(
        builder: (_, constraint){
          print(constraint.minHeight);
          print(constraint.minWidth);
          return Container();
        },
      ),
    );
  }
}

Container에 크기를 준다음 마찬가지로 출력을 해본다면 실제 최대 너비가 나오는걸 볼 수 있습니다 (제경우 428)

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        width: double.infinity,
        child: LayoutBuilder(
          builder: (_, constraint){
            print(constraint.minHeight);
            print(constraint.minWidth);
            return Container();
          },
        ),
      ),
    );
  }
}

결국 Scaffold의 경우 최소 높이와 너비가 0이기 때문에 늘어나는게 강제되지 않고 Container의 경우 최소크기가 지정되기 때문에 지정된 크기만큼 Column이 늘어나게됩니다!

0

ryan817708

궁금했던 점이 완벽하게 해결되었습니다ㅎㅎ 감사합니다!

LocationPermission.denied관련 질문입니다

0

588

1

videocontrollor dispose

0

431

1

onlogotap함수의 video nullable관련질문

0

391

1

setState 사용 차이

1

441

1

블로그 웹앱 배포 방법

0

507

1

sizedbox 위젯에 primary = RED_COLOR

1

434

1

개념 강의 순서 질문

0

409

1

materialstateProperty 다른 메소드관련질문

0

414

1

내 노트 모아보기

0

502

1

SafeArea (iPhone, Android)

0

408

1

web view 실행 안됩니다.

0

408

1

랜덤 숫자 생성기 프로젝트 관련

0

537

2

안도르이드 애뮬레이터 질문

0

384

1

super를 사용하는 건, 부모와 자식 클래스의 파라미터 이름이 꼭 같아야하나요?

0

474

1

선생님 flutter device를 크롬으로 했을때 http 통신이 안됩니다..

0

782

1

no element

0

441

1

암호화

0

235

1

책과 강의

0

387

1

voidcallback함수와 클래스내에 변수선언에 관한질문

0

475

1

android studio 세팅

0

480

1

오늘도 출근 세팅하기

2

563

1

재사용 클래스 임폴트 방법

0

480

1

가상화를 못하는 CPU인건가요? 확인 부탁드립니다.

0

399

1

flutter dispose 관련

0

1389

2