# Til - 250108

# \[TIL\] Flutter & Dart 학습

## 📚 오늘 배운 것

플러터를 사용한 기본 앱 만들기. 플러터와 다트 코드에 대한 이해. 위젯이 무엇인지?

플러터 프로젝트 생성

```bash
fluter create first_app
```

플러터 프로젝트 구조에 대한 설명.

* 플랫폼 별 폴더
    
* lib 폴더 등에 대한 설명
    

이런 폴더가 있다 정도만 알아도 될 듯.

pubspec.yaml은 중요

* 여러가지 설정들 가능. 의존성 관리 등.
    

## 🤔 내 생각

* \[궁금한 점\]
    
    * 섹션 2에서는 간단한 주사위 게임을 만드는 듯.
        
* \[비판적 분석\]
    
    * 너무 간단한 예제로 알고 있는 개념임. 완전 초보자를 위한 강의로 보임. (함수, 키워드 이런걸 가르쳐주고 있음)
        
* \[실무 적용시 고려사항\]
    
    * 플러터가 참 신기하긴 함. 정말 조립해서 앱을 만든다는 느낌이 듬. 위젯만 알면 왠만한 앱은 다 개발 가능.
        
    * 코스 내내 중요한 위젯에 대해서는 배울 내용.
        
    * 10~20개의 코어 위젯을 주로 사용 함.
        

## 💡 참고 자료

* \[추가로 찾아본 내용\]
    
    * 플러터의 매개변수 네이밍 방식이 엄청 편해보이긴 하는데, 코드의 복잡도는 올라가는 느낌이다. 실제 내부 코드를 구현할때 이렇게 구현하는게 좋은 방법일까? 라는 생각이 듬.
        
    * 찾아보다 보니 한가지 간과한게 있었음 플러터 명명된 매개변수의 경우 required 조건을 넣을 수 있어 무조건 적으로 선언해야 되는 변수들을 넣을 수 있다는 부분.
        
    * 결국에는 유니티 등에 다른 엔진에 적용하려면 빌더 패턴등의 접근을 해야 되고, 한번 더 레이어를 감싸는 부분이기 때문에 개발 생산선이 떨어질 것으로 보임.
        
    * 선언적 UI 는 현대적인 프레임워크에서 제공해주는 방식
        
        * 명령형: "밥을 담고, 고기를 올리고, 계란을 올리고..."
            
        * 선언적: "제육덮밥 하나 주세요" 와 비슷한 차이라고 볼 수 있습니다.
            

```dart
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: const Text('First App'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: const [
              Text(
                'Hello World!',
              ),
              Text(
                'It\'s time to learn Flutter!',
              ),
            ],
          ),
        ),
      ),
    );
  }
}
```
