inflearn logo
강의

講義

知識共有

[コードファクトリー] [初級] Flutter 3.0 アプリ開発 - 10個のプロジェクトで今日、初心者脱出!

Row & Column の学習準備

그냥 const라는 변수에 리스트를 선언해도 괜찮나요??

69

kimsangwon29960631

投稿した質問数 9

0

image.png

Color들의 리스트를 colors로 만드셨는데 원래 리스트 선언할때는 List<widget> colors = [

Colors.red,

Colors.orange,

••• 이런식으로 선언해야하지 않나요??

그냥 const라는 변수에 리스트를 선언해도 괜찮나요??

flutter 클론코딩

回答 2

0

Ryu

dart 언어에는 가능한 리스트 선언 방식이 여러가지가 있는데,

// 기본
List<Color> colors = [];
// var
var colors = [];
var colors = <Color>[];
// final
final colors = [];
final List<Color> colors = [];
final colors = <Color>[];
// const
const colors = [];
const List<Color> colors = [];
const colors = <Color>[];

 

이 중에서 <Color>로 꺾쇠 괄호 내 타입 선언이 되지 않은 빈 리스트는 기본적으로 런타임 타입이 List<dynamic>이 됩니다. (모든 타입의 요소를 넣을 수 있어야 하니까)

만일 const colors = [Colors.red]; 처럼 타입 선언 없이 값 리스트 내에 요소가 하나라도 있으면 전체 요소의 통일된 타입을 추론하기 때문에, 질문자 님의 사진과 같은 경우 List<Color> 로 결정됩니다.

이는 var, final, const 모두 해당됩니다.

나머지는 AI 인턴의 답변이 잘 설명해주는 것 같습니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. kimsangwon29960631님.

Flutter에서 리스트를 만들 때, 다양한 방법으로 선언할 수 있습니다. const 키워드를 사용하여 리스트를 만들면 모두 컴파일 타임에 고정된, 변경 불가능한 리스트를 얻을 수 있습니다.

const colors = [Colors.red, Colors.orange, Colors.yellow, Colors.green];

위와 같이 const 키워드를 사용하면, colors 리스트는 컴파일 타임에 미리 정의되며, 변경이 불가능합니다. 이러한 리스트는 컴파일러에 의해 최적화될 수 있으며, 불변성으로 인해 앱 실행 중 수정되지 않습니다.

반면에, 리스트를 변경 가능하게 하려면 List 타입을 명시적으로 선언하고 final이나 var를 사용하여 다음과 같이 변수로 지정할 수 있습니다:

final List<Color> colors = [Colors.red, Colors.orange, Colors.yellow, Colors.green];

이렇게 선언된 리스트는 앱 실행 중에 요소를 추가하거나 제거할 수 있습니다.

따라서, 만약 리스트의 요소가 변경될 필요가 없다면, const 키워드를 사용하는 것이 성능 측면에서 유리할 수 있습니다. 이 외에도 코드의 명확성을 높이고 실수를 방지할 수 있다는 장점이 있습니다.

아래 링크는 비슷한 질문과 답변을 포함하고 있어 도움이 될 수 있습니다:
- const로 리스트 선언 시 장점과 제한점

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

198강 (){onTap(e);}의 이해 돕기

0

39

1

video_call 플러그인 설치후 에러 발생

0

48

1

SDK 안드로이드 설치 질문!

0

63

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

94

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

73

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

57

1

플레이스토어

0

62

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

56

1

가이드라인 질문

0

59

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

78

1

emulator 실행 오류

0

96

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

73

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

44

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

55

1

video_call 플러그인 설치시 에러문제

0

67

1

children 안의 if 문에서 { } 못쓰는 이유?

0

52

1

이렇게 오류가 떠요

0

67

1

AppBar 사용했는데

0

64

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

59

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

65

1

Video Player 프로젝트에 대한 추가 질문

0

54

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

43

1

geolocator 오류때문에 개발진행이 불가능입니다

0

64

1

API 관련 이슈

0

89

2