환경설정 부분은 따로 정리를 못해놔서 추후에 추가하기로 하고, 빌드해놓은 플러터 프로젝트로 강의를 따라가며 Flutter의 기초를 익혀보려 한다.
플러터 앱은 widjet으로 구성되어 있고, 위젯을 레고블럭처럼 쌓아서 ui를 구성할 수 있다.
프로그래밍적 관점에서 위젯을 만든다는 건 class를 만든다는 것
class App{}은 그냥 class 일 뿐이다. class가 위젯이 되려면 flutter SDK에 있는 3개의 core Widjet중 하나를 상속(extend)받야야 한다.
그 중 가장 기초적이고 쉬운 Stateless 위젯을 상속받아 보자.
모든 위젯은 build 메소드를 구현해야 한다.
- build 메소드 - 화면에 UI를 build. 이 메소드가 무엇을 return 하던지 그 요소를 화면에 띄워준다.
위의 과정을 통해 작성된 main.dart의 코드는 다음과 같다.
void main() {
runApp(App());
}
class App extends StatelessWidget {
//build 입력 후 엔터를 치면 build 메서드가 자동완성 된다.
// 부모 class에 이미 있는 메소드를 override 한다
Widget build(BuildContext context) {
//Buildcontext는 일단 무시하기
return MaterialApp();
}
}
코드를 저장 후 새로고침 버튼을 누르면 다음과 같이 검은 화면으로 바뀐다.

class App extends StatelessWidget {
//build 입력 후 엔터를 치면 build 메서드가 자동완성 된다.
// 부모 class에 이미 있는 메소드를 override 한다
Widget build(BuildContext context) {
//Buildcontext는 일단 무시하기
return MaterialApp(
home: Text("Hello World!") //마우스를 위에 가져다대면 home도 위젯임을 알 수 있다.
);
}
}
코드를 실행하면, 다음과 같이 못생긴 화면을 확인할 수 있다.

class App extends StatelessWidget {
//build 입력 후 엔터를 치면 build 메서드가 자동완성 된다.
// 부모 class에 이미 있는 메소드를 override 한다
Widget build(BuildContext context) {
//Buildcontext는 일단 무시하기
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("안녕 플러터!"),
),
body: Center(
child: Text("Hello world!"),
),
),
);
}
}
다음과 같이 위젯을 쌓아 화면을 구성할 수 있다.
자주 사용하는 위젯은 알아서 숙지될테니 외워야 한다는 압박은 받지 않아도 된다고 함. 어차피 위젯의 수가 많아서 다 외울 수도 없다.
tip: ,(콤마)를 사용해 VS code 내에서 가독성을 높일 수 있다.
해당 코드를 통해 중앙정렬된 Hello world를 바디로 가지고, 안녕 플러터! 를 Appbar로 가지는 UI를 얻을 수 있다.
강의에서는 Appbar의 글씨가 가운데 정렬되어 있던데, 나는 정렬되지 않는 이유를 찾아봐야 할 듯.

아직 widjet 쌓는 방법이 익숙하지 않아서 헷갈리는데, 계속 연습해서 익숙해져야겠다.