Skip to content
@inha-capstone-project

inha-capstone-project

BYOA - Build Your own App

  • ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ธํ•˜๋Œ€ํ•™๊ต ์ข…ํ•ฉ์„ค๊ณ„(์บก์Šคํ†ค) ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋งŒ๋“  ๋…ธ์ฝ”๋“œ๋ฅผ ํ†ตํ•œ ์œ ์ €๋“ค์ด ๊ฐ„๋‹จํ•œ UI๋ฐฐ์น˜๋งŒ์œผ๋กœ๋„ ๋ชจ๋ฐ”์ผ์—์„œ ๋™์ž‘ ๊ฐ€๋Šฅํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์ œ์ž‘ ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ์ž…๋‹ˆ๋‹ค.

๋ฐฐํฌ ์™„๋ฃŒ

https://boya.run.goorm.site/

์ฐจํ˜„๊ทœ : ์›น, ์•ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

์ด์ƒ๋ฏผ : API ์„œ๋ฒ„ ๊ฐœ๋ฐœ, ํฌ๋กค๋Ÿฌ ๊ฐœ๋ฐœ

์ด์žฌ์› : API ์„œ๋ฒ„ ๊ฐœ๋ฐœ, ์„œ๋ฒ„ ๊ด€๋ฆฌ ๋ฐ ๊ตฌ์ถ•


๊ฐ„๋‹จํ•œ ๋™์ž‘ ์˜ˆ์‹œ

byoa ์˜ˆ์‹œ

10๋ถ„๋งŒ์— ๊ณ„์‚ฐ๊ธฐ ์•ฑ ๋งŒ๋“œ๋Š” ์˜ˆ์‹œ

10๋ถ„ ์•ฑ๋งŒ๋“ค๊ธฐ


์•„ํ‚คํ…์ณ

image

๊ธฐ์ˆ  ์Šคํƒ

image



๋งŒ๋“  ์ด์œ 

  • ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์˜ ์š”๊ตฌ์‚ฌํ•ญ์€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐ˜๋ฉด์— ์‹ค์ œ๋กœ ์ถœ์‹œ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์€ ์ƒ์šฉ์„ฑ์ด ์—†๋‹ค๋ฉด ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ง๋กœ ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋“ค์ด ํ•„์š”ํ•œ ์‚ฌ์šฉ์ž๋“ค์€ ์ด๋ฅผ ๊ตฌํ˜„ํ•  ๊ธฐ์ˆ ์ด ์—†๊ณ  ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ตฌํ˜„ํ•ด ์ฃผ๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ๋งŒ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ BYOA๋ฅผ ํ†ตํ•ด ์ „๋ฌธ์ง€์‹์ด ์—†๋Š” ๋น„๊ฐœ๋ฐœ์ž๋“ค๋„ ๋…ธ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ UI๋ฐฐ์น˜ ๋งŒ์œผ๋กœ๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž์‹ ๋งŒ์˜ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๊ฐ ์‚ฌ์šฉ์ž๋“ค์ด ๋งŒ๋“  ๋ชจ๋“  ์•ฑํ™”๋ฉด์€ ๊ณต์œ ๋˜๊ธฐ์— ๊ตณ์ด ์ž์‹ ์ด ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ํƒ€์ธ์ด ๋งŒ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

How to use?

  1. ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ ํ›„ ์ œ๊ณต๋˜๋Š” ํ…œํ”Œ๋ฆฟ์„ ํ†ตํ•ด UI๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค.
  2. ๋‘๋ฒˆ์งธ ํ™”๋ฉด์—์„œ ๊ทธ๋ฆผํŒ ํˆด์„ ์ด์šฉํ•ด ๋ฐฐ์น˜ํ•œ ์œ„์ ฏ๋“ค์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์„ค๋ช…์„ ์ ๋Š”๋‹ค.
  3. ๋ชจ๋ฐ”์ผ ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ [ํƒ€์ดํ‹€, ๋ฐฐ๋„ˆ์ด๋ฏธ์ง€, ์„œ๋ธŒํƒ€์ดํ‹€, ์•ฑ ์„ค๋ช…, ์นดํ…Œ๊ณ ๋ฆฌ]๋ฅผ ์ ๋Š”๋‹ค.
  4. ๋ชจ๋ฐ”์ผ ์•ฑํ™”๋ฉด์—์„œ ์ž์‹ ์ด ๋งŒ๋“  ์•ฑ์„ ํ™•์ธํ•œ๋‹ค.

๊ธฐ๋Œ€ ํšจ๊ณผ

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



๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ ์„ค๋ช… - Flutter Web

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ

    • ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ

    • ๋ชจ๋ฐ”์ผ ํ™”๋ฉด์„ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ๋Š” ์ œ๊ณต๋˜๋Š” ํ…œํ”Œ๋ฆฟ Layout ๊ธฐ๋Šฅ

      • BOX CONTAINER
        • ๋„ˆ๋น„, ๋†’์ด, ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • Row-divider
        • ๊ตต๊ธฐ, ์ƒ‰์ƒ, ๋„ˆ๋น„
      • Col-divider
        • ๊ตต๊ธฐ, ์ƒ‰์ƒ, ๋†’์ด
      • Text
        • ํ…์ŠคํŠธ ๋‚ด์šฉ, ํฐํŠธ ์‚ฌ์ด์ฆˆ, ํฐํŠธ ๊ตต๊ธฐ, ์ƒ‰์ƒ
      • Image (๋„คํŠธ์›Œํฌ ์ด๋ฏธ์ง€)
        • ์ด๋ฏธ์ง€ URL, ๋„ˆ๋น„, ๋†’์ด
      • Button
        • ๋ฒ„ํŠผ ํ…์ŠคํŠธ, ๋„ˆ๋น„, ๋†’์ด, ๊ทธ๋ฆผ์ž, ์ƒ‰์ƒ, ํฐํŠธ ์ƒ‰์ƒ
      • Icon
        • ์•„์ด์ฝ˜ ๋ณ€๊ฒฝ, ์‚ฌ์ด์ฆˆ, ์ƒ‰์ƒ
      • ListTile
        • ํƒ€์ดํ‹€, ์„œ๋ธŒ ํƒ€์ดํ‹€, Leading text, Trailing text, ํฐํŠธ ์‚ฌ์ด์ฆˆ, ์ƒ‰์ƒ
      • Check box
      • TextField
      • RadioButton

    • ๋ฐฐ์น˜ํ•œ UI์œ„์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด

      • ์ง€์šฐ๊ฐœ
      • ์„  ๊ทธ๋ฆฌ๊ธฐ
      • ํ…์ŠคํŠธ
      • ์ด๋ฏธ์ง€ ๋ฐฐ์น˜
      • ๋„ํ˜• ๋ฐฐ์น˜ [Line, Arrow, Double Arrow, Rectangle, Oval]

    • ๋ชจ๋ฐ”์ผ ํ™”๋ฉด ๋“ฑ๋ก ํŽ˜์ด์ง€

      • ํƒ€์ดํ‹€
      • ๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€ ๋“ฑ๋ก
      • ์„œ๋ธŒ ํƒ€์ดํ‹€
      • ์„ค๋ช…
      • ์นดํ…Œ๊ณ ๋ฆฌ

๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ ์„ค๋ช… - Flutter Mobile

  • ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ
  • ํ™ˆ ํ™”๋ฉด
    • ๊ฐ ์‚ฌ์šฉ์ž๋“ค์ด ๋งŒ๋“  ์•ฑ ํ™”๋ฉด ๋ฆฌ์ŠคํŠธ๋“ค์ด ListViewํ˜•ํƒœ๋กœ ๋‚˜์—ด ๋˜๋„๋ก ๊ตฌํ˜„
  • Drawer
    • ์‚ฌ์šฉ์ž ๋‹‰๋„ค์ž„ / ์นดํ…Œ๊ณ ๋ฆฌ / ๋กœ๊ทธ์•„์›ƒ
  • ๋งˆ์ด ํŽ˜์ด์ง€
    • ๋‚ด๊ฐ€ ๋งŒ๋“  ์•ฑ ๋ฆฌ์ŠคํŠธ๋“ค์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Œ

### ๊ตฌํ˜„์— ์‚ฌ์šฉํ•œ Pakages

+ flutter_native_splash: ^2.3.2 // ์•ฑ ํ™”๋ฉด ์Šคํ”Œ๋ž˜์‰ฌ ํ™”๋ฉด

+ flutter_colorpicker: ^1.0.3 // ์•ฑ๋‚ด์— ์ปฌ๋Ÿฌ๋ฅผ ์„ค์ •ํ•˜๋Š” ํŒจํ‚ค์ง€

+ get: // ์ƒํƒœ๊ด€๋ฆฌ ํŒจํ‚ค์ง€

+ cached_network_image: ^3.3.0 // ๋„คํŠธ์›Œํฌ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํŒจํ‚ค์ง€

+ flutter_iconpicker: ^3.2.4 // ์•„์ด์ฝ˜์„ ์„ ํƒํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ํŒจํ‚ค์ง€

+ http: // ์„œ๋ฒ„ ํ†ต์‹  ํŒจํ‚ค์ง€ API ํ˜ธ์ถœ ๋“ฑ

+ fluttertoast: ^8.2.3 // ๋ฉ”์„ธ์ง€๋ฅผ ํŽธํ•˜๊ฒŒ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํŒจํ‚ค์ง€

+ dio: ^4.0.0 // ์„œ๋ฒ„ ํ†ต์‹  ํŒจํ‚ค์ง€

+ http_parser: ^4.0.2 // ์„œ๋ฒ„ ํ†ต์‹  ํŒจํ‚ค์ง€

+ collection: ^1.15.0 // ๊ธฐ๋Šฅ ํ™•์žฅ ํŒจํ‚ค์ง€

+ phosphor_flutter: // ๊ทธ๋ฆผํŒ ํŒจํ‚ค์ง€

+ file_picker: // ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ํŒจํ‚ค์ง€

๊ฐœ๋ฐœ ํ•˜๋ฉด์„œ ์ƒˆ๋กœ ์‚ฌ์šฉํ•ด๋ณธ ๊ธฐ๋Šฅ

  • getx tag ๊ธฐ๋Šฅ

    • ๊ฐ ํ…œํ”Œ๋ฆฟ์„ ํ™”๋ฉด์— ๋ฐฐ์น˜ํ•˜๊ณ ๋‚˜์„œ ๋ฐฐ์น˜๋œ ์œ„์ ฏ์„ ํด๋ฆญํ–ˆ์„๋•Œ properties(์ƒ์„ธ ์„ค์ •)์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ํด๋ž˜์Šค์˜ ๊ณ ์œ ๊ฐ’์„ ๋„ฃ์–ด์„œ ๊ฐ๊ฐ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋ฅผ tag๊ฐ’์„ ๋„ฃ์–ด์„œ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ ํ•˜์˜€๋‹ค.
  • RepaintBoundary (์›น ์Šคํฌ๋ฆฐ์ƒท)์‚ฌ์šฉ Flutter ์›น ๊ฐ™์€ ๊ฒฝ์šฐ ์•„์ง ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์€์ง€๋ผ pub.dev์— ๋งŽ์€ ํŒจํ‚ค์ง€๊ฐ€ ์˜ฌ๋ผ์™€์žˆ์ง€๋งŒ web๊ด€๋ จ ํŒจํ‚ค์ง€๋Š” ์ด๋ฏธ 3๋…„์ „์— ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ฑฐ๋‚˜ ์ง€์›์ด ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์œ„ ๊ธฐ๋Šฅ(๊ธฐ๋ณธ ์ œ๊ณต ๊ธฐ๋Šฅ)์„ ํ†ตํ•ด ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์—ˆ๋‹ค.

    ์ด๋ฏธ์ง€๋Š” Dart์˜ ์ด๋ฏธ์ง€ ํฌ๋งท์ธ Uint8List๋กœ ์ €์žฅ์ด ๋˜๊ณ  ์••์ถ•๋ฅ ์ด ์ƒ๊ฐ๋ณด๋‹ค ์ข‹์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ์ง€๋ฅผ ์„œ๋ฒ„์— multipart/form-data ํ˜•ํƒœ๋กœ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. (Dio ํŒจํ‚ค์ง€ ์‚ฌ์šฉ)

  • Dragable์„ ์‚ฌ์šฉํ• ๋•Œ ๋“œ๋ž˜๊ทธ ํ• ์‹œ ๋ณด์—ฌ์ค„ ์ด๋ฏธ์ง€๋“ค์€ ์™ธ๋ถ€ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ ์ €์ž‘๊ถŒ ๋ฌธ์ œ๋กœ ์ง์ ‘ ์†์œผ๋กœ ๊ทธ๋ ค์„œ assets์— ์ ์šฉํ•˜์˜€๋‹ค.

    • button

Popular repositories Loading

  1. web-frontend web-frontend Public

    Dart 1 1

  2. Intro Intro Public

  3. Back-End Back-End Public

    Java 1

  4. .github .github Public

Repositories

Showing 4 of 4 repositories

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ