Search
Duplicate

MaterialApp

MaterialApp

Material Design์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋œ, ํ”Œ๋Ÿฌํ„ฐ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ตœ์ƒ์œ„ ์œ„์ ฏ
์•ฑ์˜ ๊ธฐ๋ณธ ์„ค์ •๊ณผ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์•ฑ์˜ ์ „์ฒด์ ์ธ ๋””์ž์ธ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์„ค์ •

โ€ข
์ œ๋ชฉ:ย ์•ฑ์˜ ์ œ๋ชฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํ…Œ๋งˆ:ย ์•ฑ์˜ ์ „์ฒด์ ์ธ ๋””์ž์ธ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํŽ˜์ด์ง€ ์ด๋™ ๊ฒฝ๋กœ:ย ์•ฑ์˜ ํŽ˜์ด์ง€ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๋””๋ฒ„๊ทธ ๋ชจ๋“œ:ย ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
Material Design : ๊ตฌ๊ธ€์—์„œ ์ œ๊ณตํ•˜๋Š” ๋””์ž์ธ ๊ฐ€์ด๋“œ๋ผ์ธ์œผ๋กœ, ์•ฑ์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

MaterialApp ์˜ ์ฃผ์š” ์œ„์ ฏ

์œ„์ ฏ
์„ค๋ช…
Scaffold
์•ฑ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์œ„์ ฏ
AppBar
์•ฑ์˜ ์ƒ๋‹จ์— ํ‘œ์‹œ๋˜๋Š” ์œ„์ ฏ
Body
์•ฑ์˜ ์ฃผ์š” ๋‚ด์šฉ์„ ํฌํ•จํ•˜๋Š” ์œ„์ ฏ
BottomNavigationBar
์•ฑ์˜ ํ•˜๋‹จ์— ํ‘œ์‹œ๋˜๋Š” ์œ„์ ฏ
FloatingActionButton
ํ™”๋ฉด์— ๋– ๋‹ค๋‹ˆ๋Š” ๋ฒ„ํŠผ
TabBar
ํƒญ์„ ์ œ๊ณตํ•˜๋Š” ์œ„์ ฏ

MaterialApp

์•ฑ์˜ ๊ธฐ๋ณธ ์„ค์ •๊ณผ ํ…Œ๋งˆ(๋””์ž์ธ)๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ตœ์ƒ์œ„ ์œ„์ ฏ

์†์„ฑ

์†์„ฑ
์„ค๋ช…
title
์•ฑ์˜ ์ œ๋ชฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
theme
์•ฑ์˜ ํ…Œ๋งˆ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
routes
์•ฑ์˜ ํŽ˜์ด์ง€ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
initialRoute
์•ฑ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ ํ‘œ์‹œํ•  ํŽ˜์ด์ง€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
debugShowCheckedModeBanner
๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

Scaffold

์•ฑ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์œ„์ ฏ
AppBar, Body, BottomNavigationBar ๋“ฑ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ

์†์„ฑ
์„ค๋ช…
appBar
์•ฑ๋ฐ”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
body
์•ฑ์˜ ์ฃผ์š” ๋‚ด์šฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
floatingActionButton
ํ”Œ๋กœํŒ… ์•ก์…˜ ๋ฒ„ํŠผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
bottomNavigationBar
๋ฐ”ํ…€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
tabBar
ํƒญ ๋ฐ”๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

AppBar

์•ฑ์˜ ์ƒ๋‹จ์— ํ‘œ์‹œ๋˜๋Š” ์œ„์ ฏ
์ œ๋ชฉ, ๋ฉ”๋‰ด, ์•ฑ๋ฐ” ๋ฒ„ํŠผ ๋“ฑ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ

์†์„ฑ
์„ค๋ช…
title
์•ฑ์˜ ์ œ๋ชฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
leading
์•ฑ๋ฐ”์˜ ์™ผ์ชฝ์— ํ‘œ์‹œ๋˜๋Š” ์œ„์ ฏ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
actions
์•ฑ๋ฐ”์˜ ์˜ค๋ฅธ์ชฝ์— ํ‘œ์‹œ๋˜๋Š” ์œ„์ ฏ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
backgroundColor
์•ฑ๋ฐ”์˜ ๋ฐฐ๊ฒฝ์ƒ‰์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
brightness
์•ฑ๋ฐ”์˜ ๋ฐ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
elevation
์•ฑ๋ฐ”์˜ ๋†’์ด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Body

์•ฑ์˜ ์ฃผ์š” ๋‚ด์šฉ์„ ํฌํ•จํ•˜๋Š” ์œ„์ ฏ

์†์„ฑ

์†์„ฑ
์„ค๋ช…
child
์•ฑ์˜ ์ฃผ์š” ๋‚ด์šฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

BottomNavigationBar

์•ฑ์˜ ํ•˜๋‹จ์— ํ‘œ์‹œ๋˜๋Š” ์œ„์ ฏ
:ย ์•ฑ์˜ ํ•˜๋‹จ์— ํ‘œ์‹œ๋˜๋Š” ์œ„์ ฏ์ž…๋‹ˆ๋‹ค. ์•ฑ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ฒ„ํŠผ์„ ํฌํ•จํ•  ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ

์†์„ฑ
์„ค๋ช…
items
๋ฐ”ํ…€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์— ํ‘œ์‹œ๋˜๋Š” ํ•ญ๋ชฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
currentIndex
๋ฐ”ํ…€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์˜ ํ˜„์žฌ ํ•ญ๋ชฉ์˜ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

FloatingActionButton

ํ™”๋ฉด ์œ„์— ๋– ์žˆ๋Š” ๋ฒ„ํŠผ ์œ„์ ฏ

์†์„ฑ

์†์„ฑ
์„ค๋ช…
child
๋ฒ„ํŠผ์˜ ์•„์ด์ฝ˜์ด๋‚˜ ์ด๋ฏธ์ง€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
onPressed
๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

TabBar

ํƒญ์„ ์ œ๊ณตํ•˜๋Š” ์œ„์ ฏ
์†์„ฑ
์„ค๋ช…
tabs
ํƒญ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ์ฝ”๋“œ

import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( title: 'My App', home: Scaffold( appBar: AppBar( title: Text('My App'), ), body: TabBarView( children: [ Container(color: Colors.red), Container(color: Colors.green), ], ), bottomNavigationBar: BottomNavigationBar( items: [ BottomNavigationBarItem( icon: Icon(Icons.home), label: 'Home', ), BottomNavigationBarItem( icon: Icon(Icons.search), label: 'Search', ), ], currentIndex: 0, onTap: (int index) { // ํƒญ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜ }, ), floatingActionButton: FloatingActionButton( child: Icon(Icons.add), onPressed: () { // ํ”Œ๋กœํŒ… ์•ก์…˜ ๋ฒ„ํŠผ์ด ํด๋ฆญ๋  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜ }, ), ), ); } }
Dart
๋ณต์‚ฌ