**이 페이지에서 알 수 있는 내용

- const Keyword
- final Keyword와 const Keyword의 차이점**

const

**const**는 **final**과 마찬가지로 선언과 초기화 이뤄지면 변수의 값을 바꿀 수 없습니다. **final**과 다른 점은 **const**는 컴파일 타임에 변수에 값이 있어야 합니다. 따라서 변수를 초기화까지 해야합니다.

**final**은 앱을 사용할 때 값이 들어간다고 하면, **const**는 앱을 사용하기 전에 값이 들어가 있어야 합니다.

API를 사용할 때를 예시로 든다면, **final**은 API key에 쓰이고, **const**는 API에 있는 데이터에 쓰인다고 보면 됩니다.

예제

void main() {
 //final의 경우 런타임에 값이 지정되므로 값이 출력됩니다. 
 final DateTime now1 = DateTime.now();
  
  print(now1);
  
  Future.delayed(
  Duration(milliseconds: 1000),
    (){
     final DateTime now3 = DateTime.now();
      
      print(now3);
    }
  );    
  
 //const의 경우 컴파일 타임에 값이 지정되므로 에러 발생
 const DateTime now0 = DateTime.now(); // error message : Ther constructor being called isn't a const constructor.
  
 print(now0);

 Future.delayed(
 Duration(milliseconds: 1000),
   (){
     const DateTime now4 = DateTime.now();
     print(now4);
   }
 );
}