runApp(const MyApp());와 runApp(MyApp()); 사이의 차이는 const 키워드의 사용 여부에 따른 차이입니다. 이 차이는 성능 최적화와 불변 객체와 관련이 있습니다.
1. const MyApp() 사용
runApp(const MyApp());
- const 키워드를 사용하면,
MyApp위젯이 불변 객체로 만들어집니다. - 컴파일 시점에
MyApp이 변하지 않는다는 것을 알려주며, 해당 위젯이 여러 번 다시 그려지더라도 동일한 값을 가진다면 Flutter는 해당 위젯을 다시 생성하지 않고 캐싱된 위젯을 사용합니다. - 결과적으로, 성능 최적화에 도움이 됩니다. 불변의 위젯은 필요할 때만 다시 그려지고, 변경되지 않는 위젯은 재구성되지 않기 때문에 렌더링 성능이 향상됩니다.
2. MyApp() 사용
runApp(MyApp());
- const 키워드를 사용하지 않으면, 매번 새로운 인스턴스가 생성됩니다.
- Flutter는
MyApp위젯이 변경될 수 있다고 생각하여, 해당 위젯을 매번 다시 렌더링할 수 있습니다. 이는 성능 최적화에 불리할 수 있습니다.
결론
const MyApp()는 위젯의 상태가 변하지 않는다면, 불필요한 위젯 재생성을 방지하고 Flutter 앱의 성능을 향상시킵니다.MyApp()은 필요할 때 새로운 인스턴스를 생성하지만, 만약 위젯이 불변이라면const를 붙여주는 것이 더 나은 선택입니다.
즉, MyApp이 변하지 않는다면 const MyApp()을 사용하는 것이 좋습니다. Flutter는 불변성을 적극적으로 사용하여 최적화를 수행하는 프레임워크이므로, const를 활용하는 것이 최적화 측면에서 이점이 많습니다.
