기본 구조를 살펴볼건데 사실 나는 dart 언어 학습을 안하고 시작한다
typeScript 계열이다 뭐다 여러 말이 있는데 뭐 효율적인 사용법은 당장 몰라도 기본적인 기능은 기본 예시 보면서 진행해보면 되니까 ~
이전에 기본 생성된 프로젝트 폴더의 lib/main.dart 를 분석 해보자
import 'package:flutter/material.dart';
첫 줄에 가져오는 부분은 material 과 관련된 정보 같은데 해당 dart 파일을 확인하니
/// Flutter widgets implementing Material Design.
///
/// To use, import `package:flutter/material.dart`.
///
/// {@youtube 560 315 https://www.youtube.com/watch?v=DL0Ix1lnC4w}
///
/// See also:
///
/// * [flutter.dev/widgets](https://flutter.dev/widgets/)
/// for a catalog of commonly-used Flutter widgets.
/// * [material.io/design](https://material.io/design/)
/// for an introduction to Material Design.
위와 같은 주석이 있다
export 한 다른 dart 파일들은 material과 관련된 dart 파일 들이고 위젯이란게 있다
얼추 검색 했을 땐 안드로이드의 View 역할 + a 인거 같은데 먼저 아래 링크를 확인 후에 widget을 알아보자
Widget catalog
Create beautiful apps faster with Flutter's collection of visual, structural,platform, and interactive widgets. In addition to browsing widgets by category,you can also see all the widgets in the [widget index][].
flutter.dev
material 부터, 레이아웃, 애니메이션, 동기(async), 쿠퍼티노 ios 디자인, 반응형 모델, 스크롤링, 인풋 등 여러가지가 있다.
해당 사이트를 보니
https://flutter.dev/docs/get-started/install
부터 시작해서 진행하는게 가장 좋을듯 정석으로 플루터 공부 진행 할거면 저거부터 따라가보자
난 전부 하진 않고 하고싶은거만 빠르게 먼저 진행해보고 쓸만해 보이면 추가적으로 진행 해볼 생각
void main() => runApp(MyApp());
메인 함수에서 MyApp을 run한다 겠지?
class MyApp extends StatelessWidget 로 MyApp Class가 시작된다
StatelessWidget 이란걸 부모로 가지는데 이를 통해
해당 Application 은 Widget이라는 것을 알 수 있고,
State가 있는 또는 없는 상태의 widget이 있을 것이라는 것을 예측 해 볼 수 있다
1. Widget이 뭔지
2. StatelessWidget이 뭔지
3. State가 있는 위젯은 뭔지 살펴보자
1. 위젯이 뭐지?
https://flutter.dev/docs/development/ui/widgets-intro
위젯에 대한 설명으로, 간략히 설명하면 위젯은 UI의 설정과 상태값을 가지고 있고, 위젯 밖에 UI를 그린다는 것 같다
위젯 설명을 보다보시 위에 나온 runApp() 에 대한 설명이 간략히 나온다
최상위 root 위젯 트리에 해당 Widget을 만드는 함수라고 한다
2. StatelessWidget이 뭐지?
일반적으로는 StatelessWidget or StatefulWidget 이 있다고 한다
StatelessWidget은 변경 될 일이 없는 위젯을 만들 때 쓰면 된다
3.State가 있는 위젯은?
StatefulWidget이 있다고 한다
위젯 수명동안 변경 될 수 있는 위젯을 만들 때 쓰면 된다고 한다
필요하면 위젯의 종류는 상단의 widgets-intro에서 살펴보고
다시 코드로 돌아가면 statelessWidget이 빌드 되면
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
위와 같은 동작을 하도록 override 한다(기본 페이지) return 값이 MaterialApp 이라고 되어 있는데, 기본 샘플 디자인이 Material이었으니
이와 관련된 것 같다(테마 정보도 있는 걸 보면)
왠지 저 부분을 바꾸면 IOS의 Cupertino 스타일도 가능할 거 같으니 MaterialApp -> CupertinoApp으로 변경하고 빌드를 해봤다
귀신 같이 바로 에러가 뜬다.
google.com/codelabs/flutter-cupertino/#0
Cupertino 안에 들어가야 할 매개변수가 달라서 그랬던 듯 하다 필요하면 위의 예시로 디자인 변경
하지만 테스트니까 일단은 분석만 해보자
Basic Widget을 보면
Text 라는 위젯이 있다
이것을 쓰면 될 듯 하다
https://flutter.dev/docs/development/ui/widgets/text
Text만 해도 여러개가 있는 것 같지만 그냥 기본으로 보이는 text로 먼저 테스트
코드의 home: MyHomePage(title: 'Flutter Demo Home Page'),
부분을 따라가 보면
class MyHomePage extends StatefulWidget {
으로 시작된다
기본 홈 위젯은 상태가 있는 위젯인 거 같고
MyHomePage 위젯의
@override
Widget build(BuildContext context) {
부분은 setState 함수가 호출되어 해당 위젯의 상태가 변할 때, 다시 build하여 UI를 그리는 것 같다
Home을 build 할 때, Scaffold를 return하는데, 이게 뭘까 검색해보니 Floating UI 인거 같다 (Android로 치면 fab elevation)
코드 상세 내용을 보니 실제로 floating action button 이 적혀 있다
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
onPressed는 안드로이드의 onClickListener의 역할을 하는 것 같다
일단 기본 Hello world App 구조 살펴보기는 여기서 끝
'개발 > flutter' 카테고리의 다른 글
플루터 애매한 부분은 패스하고 위젯으로 돌아가서!! 6 - flutter 이주의 위젯, 위젯 살펴보기 (0) | 2019.12.24 |
---|---|
플루터 아직은 잘 모르겠지만 그래도!! 5 - flutter with firebase - firestore 조사 (0) | 2019.12.24 |
귀찮아도 또다시 해보자 3 - flutter build web, firebase hosting 에 올리기 (0) | 2019.12.22 |
진짜 귀찮지만 만들어보자 플루터 2 - 기본 페이지 크롬에서 열기 (0) | 2019.12.22 |
진짜 귀찮지만 그래도 한번 만들어보자 1 (0) | 2019.12.22 |