flutter는 native 코드와 다르게 직접 운영체제가 코드를 실행하지 않는다.
운영체제는 내가 짠 dart 코드를 컴파일하는 C#언어의 엔진을 실행한다.
그 엔진이 flutter의 dart 코드를 실행한다.
이러한 구조로 인해 flutter에서 만들어지는 ui들은 운영체제가 만들어낸 것이 아닌
flutter가 그려낸 가짜 ui이다.
그러므로 native에서 제공하는 ui의 디자인과는 다르지만 모든 픽셀에 접근할 수 있으며 다양한 애니메이션을 사용할 수 있는 것도 이 덕분이다.
flutter는 모든 구조가 위젯으로 되어있고 어떤 것을 만들어도 위젯으로 만든다.
기본 구조로는 main과 App 위젯이 root라고 할 수 있다.
위젯은 class로 만들 수 있으며 SDK에 있는 4가지 위젯 중 하나를 상속 받고 build를 추가해야 위젯이 된다.
App 위젯에서는 build 후 MaterialApp(구글 디자인)과 CupertinoApp(ios 디자인) 중 하나를 리턴해야한다.
또한 home 안에 Scaffold로 구조를 잡아주어야한다.
import 'package:flutter/material.dart';
void main() {
runApp(App());
}
class App extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Hello Flutter"),
),
body: Center(
child: Text("Hello World!"),
),
),
);
}
}