[Flutter] Main과 MateriaApp의 필수적인 속성

2020. 8. 15. 17:12·Flutter/Flutter Widget Basic
목차
  1. Main 함수
  2. MaterialApp

플러터도 여느 프로그램처럼 main 함수에서 시작한다.

main 함수에서는 runnApp 함수로 일반적으로 MaterialApp을 호출한다.

MaterialApp은 타이틀, 앱의 전반적인 디자인과 관련된 테마 등을 속성으로 가지며, home 속성으로 하위 스크린을 호출할 수 있다.

 

안드로이드 디자인을 기반으로 하는 MaterialApp 대신 IOS 디자인을 기반으로하는 CupertinoApp을 사용할 수도 있다. 대부분의 디자인이 커스텀이 되기때문에 사실 어떤 것을 사용하든 상관이 없고 정보가 더 많은 MaterialApp을 기본으로 사용하는 것을 추천한다. (CupertinoApp을 사용하면 picker view를 사용할 수 있다는 장점은 있다.)

 

Main 함수

void main() {

//1) 스마트폰 알림바의 색상을 변경한다. 따로 설정하지 않는다면 반투명이다.
  SystemChrome.setSystemUIOverlayStyle(
      SystemUiOverlayStyle(statusBarColor: Color(0xFFF9F9F9)));
      
//2) MyApp을 호출한다. 반드시 MaterialApp(CupertinoApp)을 return 받아야한다.
  runApp(MyApp());
}

 

 

MaterialApp

MaterialApp(

//1) 앱의 전반적인 테마를 설정한다.
    theme: ThemeData(
	  primaryColor: Colors.white, //위젯들의 색상이 해당 색상과 보색을 띄게된다.
      accentColor: Colors.green, //강조하는 색상을 정한다.
      brightness: Brightness.light, //black이라면 다크모드이다. 일반적으로 스마트폰의 설정을 불러와 유동적으로 변경한다.
      
      /*텍스트의 style을 미리 설정해놓고 호출해 사용할 수 있다.
		text 위젯 style 속성에서 호출한다. style: Theme.of(context).textTheme.bodytext1*/
      textTheme: TextTheme(bodytext1: TextStyle(fontWeight: FontWeight.bold)) 
      
      /*앱에서 만들어지는 버튼들의 default 형태를 설정한다. 테마를 사용하지 않으려면 RawMaterialButton을 사용해야한다. */
	buttonTheme : ButtonThemeData(
		shape : RoundedRectangleBorder(borderRadius : BorderRadius.circular(50)),
        buttonColor : Colors.deepPurple,
        textTheme : ButtonTextTheme.primary 
        //버튼의 텍스트 색상에 관여한다. primary라면 primaryColor를, acceent라면 accentColor을 반영한다.
  
  	  //위젯의 밀집도와 관련
  	visualDensity: VisualDensity.adaptivePlatformDensity,
  ),

//2. 메인 위젯 호출, MyApp은 일반적으로 Scaffold로 이루어짐
    home: MyApp(title: 'AA Crowd Consulting'),
  ));

}

 

* textTheme와 buttonTheme 속성이 상당히 편리하므로 필수적으로 사용하는 것이 좋다.

 

* visualDensity 속성은 링크 참고

https://material.io/design/layout/applying-density.html#components

저작자표시 비영리 변경금지 (새창열림)

'Flutter > Flutter Widget Basic' 카테고리의 다른 글

[플러터] Toast 메시지 (Snack bar) 생성하기  (0) 2021.01.07
[플러터] onClick 속성이 가능한 Text 위젯  (0) 2020.11.21
[플러터] bottom Navigation을 구현하는 3가지 방법  (0) 2020.09.28
[플러터] Inkwell의 이펙트 제거  (0) 2020.09.24
[Flutter] Appbar에서 알아야할 속성  (0) 2020.08.22
  1. Main 함수
  2. MaterialApp
'Flutter/Flutter Widget Basic' 카테고리의 다른 글
  • [플러터] onClick 속성이 가능한 Text 위젯
  • [플러터] bottom Navigation을 구현하는 3가지 방법
  • [플러터] Inkwell의 이펙트 제거
  • [Flutter] Appbar에서 알아야할 속성
박유상의 개발블로그
박유상의 개발블로그
개발블로그
  • 박유상의 개발블로그
    박유상의 개발블로그
    박유상의 개발블로그
  • 전체
    오늘
    어제
    • 전체 (134)
      • Who am I (10)
        • Portfolio (4)
        • Reminiscence (5)
        • Oversea (1)
        • SiliconValley (0)
      • React (36)
        • React Basic (15)
        • React Tech (5)
        • JavaScript (7)
        • TypeScript (3)
        • CSS&HTML (3)
        • Firebase (3)
      • NodeJS (1)
        • NodeJS Basic (1)
      • Flutter (55)
        • Flutter Widget Design (5)
        • Flutter Widget Basic (8)
        • Flutter Tech (18)
        • Flutter Issue (7)
        • Flutter Web (6)
        • About Flutter (2)
        • Firebase (1)
        • Dev Env (1)
        • Dart (7)
      • Programming (31)
        • Web (1)
        • General (0)
        • Algorithm (25)
        • Python (1)
        • VS Code (2)
      • Django (0)
  • 블로그 메뉴

    • Who I AM
    • React
    • NodeJS
    • Flutter
    • Programming
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    프로그래머스
    파이썬
    포트폴리오
    알고리즘
    DP
    useRef
    Python
    DART
    탐욕법
    리액트
    JSON
    웹
    CSS
    Flutter
    map
    useTranslation
    github
    react
    useState
    HTML
    Redux
    TypeScript
    Firebase
    플러터
    링고리
    flutter web
    플러터 웹
    Lingory
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박유상의 개발블로그
[Flutter] Main과 MateriaApp의 필수적인 속성

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.