profile
๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ๊ฐ€ ๋ณ„๊ฑฐ๋‹ˆ ๊ทธ๋ƒฅ ๋ฐฐ์šด๊ฑฐ ์ ์œผ๋ฉด ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ์ง€
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ Firestore ์‚ฌ์šฉ

firebase ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ 2๊ฐœ DB ์ค‘ ํ•˜๋‚˜ realtime database, firestore ์ด๋ ‡๊ฒŒ 2๊ฐœ ์žˆ์Œ. NoSQL DB, SQL ๋ฌธ๋ฒ•์—†์ด ์‚ฌ์šฉํ•˜๋Š” DBํด๋”( collection )๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— ๋ฌธ์„œ( document )๋ฅผ ๋„ฃ๋Š”์‹์œผ๋กœ ์ž๋ฃŒ

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ GridView, CustomScrollView

ListView๋‚˜ GridView ์‚ฌ์šฉ์‹œ ์ž๋™์œผ๋กœ ์Šคํฌ๋กค์ด ์ƒ์„ฑ๋˜์ง€๋งŒ ๋‹ค๋ฅธ์š”์†Œ์™€ ํ•ฉ์ณ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์œ„์ ฏ์„ ์“ด ์˜์—ญ๋งŒ ์Šคํฌ๋กค์ด ๋จ.์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ํ•ฉ์ณ์„œ ํฌ๊ฒŒ ์Šคํฌ๋กค๋ฐ”๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์œ„์ ฏ๋Œ€์ถฉ Column์ด๋ž‘ ๋˜‘๊ฐ™์€ ์šฉ๋„์ง€๋งŒ ์Šคํฌ๋กค๋ฐ” ์ƒ๊ธฐ๊ณ  ๋ฌธ๋ฒ•๋„ ์•ฝ๊ฐ„

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ Provider ํŒจํ‚ค์ง€

์ „์†ก ์—†์ด ๋ชจ๋“  ์œ„์ ฏ์ด state๋ฅผ ์ง์ ‘ ๊ฐ€์ ธ๋‹ค์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํŒจํ‚ค์ง€Provider ํŒจํ‚ค์ง€state ๋ณด๊ด€ํ•˜๋Š” store ํ•„์š”store ๋“ฑ๋ก ํ•„์š”store๋ฅผ ์‚ฌ์šฉํ•  ์œ„์ ฏ๋“ค์„ ์ „๋ถ€ ChangeNotifierProvider()๋กœ ๊ฐ์‹ธ๋ฉด๋จ. ๋ชจ๋“  ์œ„์ ฏ์— ๋‹ค ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ GestureDetector

ํ…์ŠคํŠธ๋‚˜ ์ด๋ฏธ์ง€ ๋“ฑ์˜ ์œ„์ ฏ์„ ์ด ์œ„์ ฏ์œผ๋กœ ๊ฐ์‹ธ๋ฉด ํ•ด๋‹น ์œ„์ ฏ์„ ์–ด๋–ป๊ฒŒ ๋งŒ์ง€๋Š”์ง€ ๋‹ค ๊ฐ์ง€ํ•ด์„œ ๋™์ž‘ ์ถ”๊ฐ€ํ•ด ์ค„ ์ˆ˜ ์žˆ์ŒonTap ( ํ•œ๋ฒˆํด๋ฆญ )onDoubleTap( ๋”๋ธ”ํƒญ )onLongPress ( ๊ธธ๊ฒŒ ๋ˆ„๋ฅผ ๋•Œ )onScaleStart ( ๋‘์†๊ฐ€๋ฝ์œผ๋กœ ์คŒ์ธ ์‹œ ์‚ฌ์šฉ )๊ทธ

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ shared preferences

String, bool, int, double, stringList ๊ฐ€๋Šฅmap ํ˜•์‹ ์ž๋ฃŒ๋Š” jsonEncode ํ•ด์„œ string ์œผ๋กœ ์ €์žฅ์ด๋ฏธ์ง€๋Š” ์ €์žฅ ๋ชปํ•จ,. ์ด๋ฏธ์ง€ ์ €์žฅํ•˜๋ ค๋ฉด cached_network_image ๊ฐ™์€ ํŒจํ‚ค์ง€ ์‚ฌ์šฉํ•˜๋ฉด๋จ.

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ Image picker

image picker ์„ค์น˜+์‚ฌ์šฉ๋ฒ•์‚ฌ์šฉ์˜ˆ์‹œ๊ณ ๋ฅธ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ, ํ™”์งˆ ์กฐ์ • ๊ฐ€๋Šฅ.์ด๋ฏธ์ง€ ํ•„ํ„ฐ ํŒจํ‚ค์ง€

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ ์Šคํฌ๋กค์œ„์น˜ ํŒŒ์•…ํ•˜๋Š”๋ฒ•, ๋”๋ณด๊ธฐ์š”์ฒญ

๋ฌธ์ž ${๋ณ€์ˆ˜๋ช…} ๋ฌธ์žStatefulWidget์€ class๊ฐ€ 2๊ฐœ, ๋ถ€๋ชจ๊ฐ€ ๋ณด๋‚ธ state๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฒซ๋ฒˆ์งธ ํด๋ž˜์Šค์—์„œ ๋“ฑ๋กํ•ด์ฃผ๊ณ  ์‚ฌ์šฉ์€ ๋‘๋ฒˆ์งธ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ ์‚ฌ์šฉํ• ๋•Œ๋Š” widget.๋ณ€์ˆ˜๋ช…๊ณผ ๊ฐ™์ด ์•ž์— widget.์ด ๋ถ™์–ด์•ผํ•จ.ScrollController๋ฅผ

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ Future, Future Builder, Dio ํŒจํ‚ค์ง€

์„œ๋ฒ„์— GET, POST ์š”์ฒญํ•  ์ผ์ด ๋งŽ์œผ๋ฉด http ํŒจํ‚ค์ง€๋ณด๋‹จ Dio ํŒจํ‚ค์ง€ ์„ค์น˜ํ•ด์„œ ์“ฐ๋Š”๊ฒŒ ์ข‹์„์ˆ˜๋„์žˆ์Œ.state ๋‚ด์šฉ์ด GET์š”์ฒญ์œผ๋กœ ๋Šฆ๊ฒŒ ๋„์ฐฉํ•˜๋Š” ๊ฒฝ์šฐ FutureBuilder()๋กœ state ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์„ ๊ฐ์‹ธ์ฃผ๋ฉด๋จ.์ž…๋ ฅํ•œ Future ๋ณ€์ˆ˜๊ฐ€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ ํƒญ์œผ๋กœ ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ, ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ

UI์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ €์žฅํ•  state๋ฅผ ์ƒ์„ฑstate๋ฅผ ๋งŒ๋“ค๋•Œ๋Š” StatefulWidget์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ•จ.๊ทธ State์— ๋”ฐ๋ผ UI ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์ผ ์ง€ ์ฝ”๋“œ ๋งŒ๋“ค์–ด๋‘๊ณ ์œ ์ €๊ฐ€ state๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ(ํด๋ฆญํ•œ๋‹ค๊ฑฐ๋‚˜)http ๋ผ๋Š” ํŒจํ‚ค์ง€ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•จ.pubs

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ ThemeData

์Šคํƒ€์ผ๋งŒ ๋ชจ์•„์„œ ThemeData ์œ„์ ฏ์œผ๋กœ ๋งŒ๋“  ๋’ค theme ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ ์Šคํƒ€์ผ ์ค‘๋ณต์ด ๋ฐœ์ƒ ํ•  ์‹œ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ฐ€๊นŒ์šด ์Šคํƒ€์ผ์„ ๋จผ์ € ์ ์šฉํ•˜๋ ค๊ณ  ํ•จThemeData ๊ธธ์–ด์งˆ ๊ฒฝ์šฐ lib ํด๋” ์•ˆ์—์„œ ๋‹ค๋ฅธ dart ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด๋†“๊ณ  import ํ•ด์˜ค๋ฉด ๊น”๋”ํ•˜

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ TextField ์Šคํƒ€์ผ์ฃผ๋Š”๋ฒ•

icon ํŒŒ๋ผ๋ฏธํ„ฐ ๋Œ€์‹  prefixIcon:, suffixIcon: ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ์žˆ์Œ.์ปค์„œ ์ฐํ˜”์„ ๋•Œ, ์—๋Ÿฌ์ผ ๋•Œ ๋“ฑ ํ…Œ๋‘๋ฆฌ ๊ด€๋ จ ํŒŒ๋ผ๋ฏธํ„ฐborder:focusedBorder:disabledBorder:errorBorder:focusedErrorBorder:Outlin

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

ํ”Œ๋Ÿฌํ„ฐ ์œ ์ €์—๊ฒŒ ์•ฑ ๊ถŒํ•œ ์š”์ฒญํ•˜๊ธฐ

permission_handler \- pubspec.ymal ํŒŒ์ผ์— ๋ฒ„์ „๊ธฐ๋กandroid ํด๋” gradle.properties ํŒŒ์ผ ๋‚ด ์•„๋ž˜ ๋‚ด์šฉ ํ™•์ธandroid/app/build.gradle ํŒŒ์ผ ์ค‘๊ฐ„์— compileSdkVersion ํ™•์ธ31๋กœ ๋งž์ถ”๊ฑฐ๋‚˜, ์ˆซ์ž

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ ์‚ฌ์šฉ์ž Input ๋ฐ›๋Š” ๋ฒ•

TextEditingController() ๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜๋Š” ์ƒ์„ฑํ•ด์„œ TextField ์œ„์ ฏ์— controller ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ๊ฑฐ๋‚˜OnChanged ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ํ–ˆ์„ ๋•Œ ๋™์ž‘๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•ด์ฃผ๊ฑฐ๋‚˜input์ด 10๊ฐœ๋ฉด 10๊ฐœ๋งŒํผ์˜ 1 or 2๋ฒˆ ์ž‘์—…์„ ํ•ด์ฃผ

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ ๋ถ€๋ชจ ์ž์‹ widget๊ฐ„ state ๊ณต์œ 

๋ณด๋‚ด๊ธฐDialogUI( state : a )์ž‘๋ช… : ๋ณ€์ˆ˜๋ช…์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ถ”๊ฐ€ ์ž์‹์€ state ์ด๋ฆ„์„ ๋“ฑ๋กthis.์ž‘๋ช…ํ•œ ์ด๋ฆ„, final ์ž‘๋ช…ํ•œ ์ด๋ฆ„ 2๊ฐœ ์ถ”๊ฐ€DialogUI ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€๋ถ„์˜ {} ๋Š” {}์•ˆ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์„ ํƒ์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ผ๋Š” ๋œป์‚ฌ์šฉ์ž์‹ -> ๋ถ€๋ชจ๋กœ

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ Dialog์ฐฝ , context

์›๋ž˜ ์‹คํ–‰ํ•˜๋˜ ์†Œ์Šค๋กœ ์‹คํ–‰ํ•  ์‹œ MaterialApp ์ด ์—†์–ด์„œ ์•ˆ๋œ๋‹จ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉฐ Material App ๋ฐ–์œผ๋กœ ๋นผ์ค€๋’ค ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค ์ด๊ฑฐ๋Š” context ๊ด€๋ จํ•œ ๋‚ด์šฉ์ธ๋ฐ ๊ทธ๋ƒฅ ๊ฐ•์˜ ํ•œ๋ฒˆ ๋” ๋“คใ…‡๋ฉด ์ดํ•ด๋จ ์กฑ๋ณด๊ฐ™์€๊ฑฐ๋ผ๊ณ  ๋ณด๋ฉด๋จ.๊ทธ์น˜๋งŒ ๋ถ€๋ชจ๋“ค์˜ ์กฑ๋ณด๋งŒ ์žˆ์Œ.ShowDi

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ Stateful Widget

state๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ์œ„์ ฏ ์žฌ๋ Œ๋”๋ง์ด ๋จ.state ๋งŒ๋“œ๋Š”๋ฒ•์€ Stateful Widget ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ์œ„์ ฏ์„ IDE ์ „๊ตฌ๋ฒ„ํŠผ ์ด์šฉํ•ด์„œ Stateful Widget์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ค˜์•ผํ•จ.Stateful Widge ๋งŒ๋“œ๋Š”๊ฑด stful ํ•˜๊ณ  ํƒญํ‚ค ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ์ž๋™์ƒ์„ฑst

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ ListView.Builder, ListTile, ๋ฒ„ํŠผ

์™ผ์ชฝ์— ๊ทธ๋ฆผ์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์— ๊ธ€ ์žˆ๋Š” ๋ ˆ์ด์•„์›ƒ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ํŽธํ•จ.๋ฆฌ์ŠคํŠธ๋ฅผ ๋™์ ์œผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋‹จ์— ๊ณต์ค‘์— ๋œฌ ๋ฒ„ํŠผ์ด ์ƒ์„ฑ์ด ๋จ.๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ์˜ ๋™์ž‘์€ onPressed์—๋‹ค ์ž‘์—…

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ ์ปค์Šคํ…€ ์œ„์ ฏ, ListView

์ž‘๋ช…ํ•  ๋ถ€๋ถ„์˜ ํ•จ์ˆ˜๋ช…์€ ์˜์–ด๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผํ•จreturn ์˜ค๋ฅธ์ชฝ์— ์ถ•์•ฝํ•  ์œ„์ ฏ๋ถ€๋ถ„์„ ๋„ฃ์œผ๋ฉด ๋จ.์ปค์Šคํ…€ ์œ„์ ฏ์€ ๋งŒ๋“ค์–ด๋†“์œผ๋ฉด ์•„๋ฌด๋ฐ๋‚˜ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ์ปค์Šคํ…€ ์œ„์ ฏ ์•ˆ์—์„œ ์ปค์Šคํ…€ ์œ„์ ฏ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค์•„๋ฌด๊ฑฐ๋‚˜ ๋‹ค ์ปค์Šคํ…€ ์œ„์ ฏํ™” ํ•˜๋ฉด ์•ˆ๋˜๊ณ  ์žฌ์‚ฌ์šฉ์ด ์žฆ์€๊ฒƒ, ํฐ ํŽ˜์ด์ง€๋“ค์„ ์ปค์Šคํ…€ ์œ„

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”Œ๋Ÿฌํ„ฐ Expanded, Flexible

Row ์•ˆ์—์„œ ๋ฐ•์Šค๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋ฐฐ์น˜ํ• ๋•Œ %๋กœ ์˜์—ญ์„ ๋‚˜๋ˆ„๊ณ  ์‹ถ์„ ๋•Œflex๋Š” ์ด ๋ฐ•์Šค๊ฐ€ ๊ฐ€๋กœํญ์„ ์–ผ๋งˆ๋‚˜ ์ฐจ์ง€ํ•  ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฐ์ˆ˜Column ์•ˆ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‚˜์˜ ๋ฐ•์Šค๋งŒ ๊ฐ€๋กœํญ์„ ๊ฝ‰ ์ฑ„์šฐ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

2022๋…„ 4์›” 19์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท