post 제목에서 알 수 있듯 바로 type이다.
다트는 type-safe language
라고 할 수 있다.
즉, 모든 값은 특정 type이 있다는 것이다.
하지만 1가지 type만 있는 것이 아니다. 각각의 타입은 extend를 통하여 결국은 최종적으로 Object 라는 super type으로부터 근원한다.
이는 TypeScript와 비슷한 기능으로 잘못된 곳에서 잘못된 type으로 작업할 수 없도록 compile이전에 checking을 해준다.
Dart에 내장된 타입이 아니라 Flutter가 제공하는 타입인 Widget도 결국은 그냥 Object 타입이다.
그리고 이 Object 타입은 Object는 메모리의 데이터 구조일 뿐이다.
그리고 이때 OBject 타입은 Dart의 Core concept이다.
이는 simple한 String부터 Widget Obj인 MeterialApp, Scaffold, Color 등을 모두 뜻하기 때문이다.
decoration: BoxDecoration(gradient: LinearGradient(colors: ),),
BoxDecoration
, LinearGradient
처럼 말이다.non-final
한) 변수인 var 프롭이 생겼다면 상단에 해당하는 GradientContrainer(생성자함수
)는 더이상 const할 수 없다. 만약 위와같은 코드가 있다고 가정해보자 이 코드는 Optimize한 코드일까?
아니다. 왜냐하면 Random객체가 계속하여 생성하고 삭제되며 물론 메모리 공간을 차지하진 않지만 매우 불필요한 작업을 하게된다.
즉, 저 Random() 자체를 객체로 저장해두고 계속 꺼내쓰면 좋다.
그럼 위의 상태가 최적의 상태일까? => 아니다. 왜냐하면 이 역시 객체가 어디선가 생성자함수로 생성이 될 때마다 randomizer
가 생성되기 때문이다. 그래서 class 밖으로 빼서 선언해주면 좋다.
물론 State객체가 다시 새로 생성된다는 것은 기술적으로 불가능하지만 그래도