BoxConstraints란위젯이 자체적으로 가질 수 있는 크기를 정의하는 네 가지 값의 집합최소 너비최대 너비최소 높이최대 높이제약 조건을 이해하기 위해서는 다음의 플러터 핵심 규칙을 이해하는 것이 먼저다.Constraints go down. Sizes go up. Parent sets position.제약 조건은 아래로, 크기는 위로, 부모는 위치를 지정한다.Constraints go down. Sizes go up. Parent sets position.위젯은 부모로부터 제약 조건(Constraints)를 받는다.위젯은 자신의 자식(children) 목록을 하나씩 탐색하며 위젯은 자식들에게 그들의 제약 조건을 알려주고 각 자신이 어떤 크기를 원하는지 묻는다.그리고 위젯은 자식들의 위치를 하나씩 설정..
OCP(개방-폐쇄 원칙)란 무엇인가?개방-폐쇄 원칙은 "소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에 대해서는 개방되어야 하지만, 수정에 대해서는 폐쇄되어야 한다"는 원칙이다. 쉽게 말해, 새로운 기능을 추가할 때는 기존 코드를 변경하지 않고 확장할 수 있어야 한다는 의미를 갖고 있다. OCP를 지키면 얻는 이점:유지보수성 향상: 기능 추가 시 기존 코드에 대한 변경이 적어 버그 발생 가능성이 줄어든다.재사용성 증가: 잘 정의된 추상화를 통해 여러 곳에서 재사용 가능한 모듈을 만들 수 있다.유연성 증대: 시스템의 변경에 유연하게 대응할 수 있다.그런데 이 앞서 설명한 OCP 원칙을 지키는 건 DI 없이 불가능하다. OCP 원칙을 지키기 위해서는 왜 DI가 필수적인지 Dart 코드를 통해 알아본다.D..
개요본격적으로 플러터를 학습하기 전에, 이번 포스팅에서 기본적인 플러터의 예제 어플리케이션의 코드를 살펴본다.Symbols다음은 flutter run 명령어로 실행되는 기본 엔트리포인트 lib/main.dart의 심볼 목록이다.dart의 엔트리포인트 main 함수, 그리고 다음의 3가지 클래스로 이루어져있다.MyAppMyHomePage_MyHomePageStatemainvoid main() { runApp(const MyApp());}runApp() 함수의 인자로 MyApp()을 실행한다.Dart의 상수 생성자 기능을 이용한다.상수 생성자를 이용하려면 조건이 필요한데, 모든 필드가 final로 초기화 되어야한다.해당 내용은 여기를 참고했다.객체가 한번 빌드되면 어플리케이션 생명주기동안 동일하게 유지되므..