Skip to content

1주차 플러터 시작하기

Namju Kim edited this page May 25, 2024 · 1 revision

개발 환경 설정

플러터 프로젝트 Demo 앱 살펴보기

main.dart 파일 살펴보기

Main 함수

프로젝트가 시작되는 main 함수는 다음과 같이 작성되어 있습니다.

runApp 함수를 통해 MyApp 위젯을 실행합니다.

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

MyApp 위젯

MyApp 위젯은 StatelessWidget을 상속받아 구현되어 있습니다.

MaterialApp 위젯을 반환하며, MaterialApp 위젯은 MaterialApp3를 사용하도록 설정되어 있습니다.

MaterialApp 위젯은 title, theme, home 속성을 가지고 있습니다.

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

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

MyHomePage 위젯

MyHomePage 위젯은 StatefulWidget을 상속받아 구현되어 있습니다.

Scaffold 위젯을 반환하며, Scaffold 위젯은 appBar, body, floatingActionButton 속성을 가지고 있습니다.

_incrementCounter 함수를 통해 _counter 변수를 증가시키고, setState 함수를 호출하여 화면을 갱신합니다.

Scaffold 위젯은 흰 도화지와 같은 역할을 하며, AppBar, FloatingActionButton, Drawer, BottomNavigationBar 등을 포함할 수 있습니다.

  • AppBar 위젯은 앱의 상단에 위치하며, title 속성을 가지고 있습니다.

  • body 속성은 Scaffold의 중심에 위치하는 위젯을 가지고 있습니다. 본문에 해당하는 위젯을 포함합니다.

  • floatingActionButton 속성은 Scaffold의 오른쪽 하단에 위치하는 위젯을 가지고 있습니다. 일반적으로 사용자의 주요 작업을 수행하는 버튼을 포함합니다.

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

pubspec.yaml 파일 살펴보기

pubspec.yaml 파일은 플러터 프로젝트의 설정 파일로, 프로젝트의 이름, 버전, 환경, 의존성, 폰트, 이미지 등을 설정할 수 있습니다.

여기서 가장 많이 사용되는 설정은 dependencies, assets 입니다.

  • dependencies는 프로젝트에서 사용할 외부 패키지를 설정합니다.
  • assets는 프로젝트에서 사용할 이미지, 폰트 등을 설정합니다.
name: flutter_application_2
description: "A new Flutter project."
publish_to: "none"

version: 1.0.0+1

environment:
  sdk: ">=3.3.4 <4.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.6

dev_dependencies:
  flutter_test:
    sdk: flutter

  flutter_lints: ^3.0.0

flutter:
  uses-material-design: true
  assets:
    - images/

  fonts:
    - family: Schyler
      fonts:
        - asset: fonts/Schyler-Regular.ttf
        - asset: fonts/Schyler-Italic.ttf
          style: italic
    - family: Trajan Pro
      fonts:
        - asset: fonts/TrajanPro.ttf
        - asset: fonts/TrajanPro_Bold.ttf
          weight: 700