채널톡 아이콘

인프런 커뮤니티 질문&답변

아싸쿨피스님의 프로필 이미지

작성한 질문수 1

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

StatefulWidget 라이프 사이클 실습 세팅하기

위젯내에서 다트문법을 쓸수 있고 없고 구분 방법

작성

·

31

0

StatefulWidget 라이프 사이클 실습 세팅하기 편에서 4분 30초쯤 보면 리스트에서는 if 문을 쓸수있는데 Column에는 if 문을 못 쓴다라고 해서 궁금증이 생겼습니다.

다트 문법은 언제 쓸수 있고 없는지 초보자 입장에서 어떻게 구분 하면 될까요?

답변 2

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

위젯 내에서 다트 문법을 사용 할 수 있는게 아니라 말씀하신 부분이 Dart 문법의 정의입니다.

Dart 문법은 원래 리스트 내부에서 if문 사용이 가능하도록 하고 있습니다.

예를들어

[

if(false)

Container(),

Container(),

]

위 코드의 경우 아래 컨테이너 하나만 렌더링 하게 됩니다.

항상 기억하셔야할게 위젯은 특별한 문법이 아닙니다. 단순히 클래스이고 화면에 렌더링할때 인스턴스화 하는 것 뿐이라 다트문법의 모든 규칙에 구속됩니다.

감사합니다!

아싸쿨피스님의 프로필 이미지

답변 감사합니다.

생각의 전환을 하는 계기가 되었어요.

위젯을 클래스 관점으로 보니깐 이해가 되네요

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 아싸쿨피스님.

Flutter와 Dart를 처음 배우는 단계에서 이러한 문법적인 부분은 조금 혼란스러울 수 있습니다. 다트 언어에서 제공하는 다양한 기능과 플러터 위젯 트리를 다루다보면, 각 환경에서 사용할 수 있는 문법이 구분되기 시작합니다.

1. 리스트 구문에서 if 문 사용:
Dart에서는 리스트를 정의할 때 짧은 문법을 통해 조건부 요소를 추가할 수 있습니다. 예를 들어, [if (condition) Widget()] 같은 방식으로, 조건에 따라 리스트에 요소를 추가할지 말지를 결정할 수 있습니다.

2. Flutter 위젯 트리 내에서의 사용 제한:
반면, Column과 같은 위젯에서는 directly if 문을 사용하는 것이 불가능합니다. 위젯 트리는 정적으로 컴파일되며, 빌드 트리의 노드로서 위젯이 들어가기 때문에, 직접 코드를 삽입할 수 있는 구조가 아닙니다. 대신, 위젯 리스트를 사용할 때 다트 문법을 활용하여 조건에 따른 위젯을 추가할 수 있습니다.

만약 이러한 차이점이 더 심화된 설명이 필요하다면, 강의의 문맥에서 이를 설명한 부분을 다시 확인해보시면 도움이 될 것입니다.

아래 링크들을 통해 유사한 질문과 답변을 확인하실 수 있습니다:
- StatefulWidget Life Cycle 관련 질문
- 커스텀 위젯 변수 선언 위치 차이

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

아싸쿨피스님의 프로필 이미지

그러면 값이 참 일때 버튼위젯을 보여주고 값이 거짓일 때는 텍스트위젯을 보여조는건 어떻게 해야하나요?