๐Ÿ‹ Flutter

์š”์ฆ˜ ์•‰์•„์„œ ๋จน๊ธฐ๋งŒ ํ•˜๋Š” ๋นˆ๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๋‹ค๋ณด๋‹ˆ ๋ชธ์— ํƒ€์ด์–ด๊ฐ€ 2์„ผ์น˜๊ฐ€๋Ÿ‰ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์—ฌ๋ฆ„๋„ ์˜ค๊ณ  ์Šฌ์Šฌ ๋‹ค์ด์–ดํŠธ ์‹œ์ž‘์„ ํ•ด์•ผ๋  ๋“ฏ ํ•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Linux๊ธฐ๋ฐ˜ ์„œ๋ฒ„์—์„œ Flutter๋กœ ์ž‘์„ฑํ•œ Web์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๊ฐ€ ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์šฐ์„  ์šฐ๋ฆฌ๊ฐ€ ์ค€๋น„ํ•ด์•ผํ•  ์‚ฌํ•ญ๋“ค์€ 1. Flutter๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ (2.0 ์ด์ƒ) 2. ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜ ์„œ๋ฒ„ (ubuntu, debian, centOS ํฌํ•จ) ์ด๊ฒŒ ๋์ด๋‹ค. ์ž ๊ทธ๋Ÿฌ๋ฉด ๋จผ์ € Flutter ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ์›น ์•ฑ์œผ๋กœ ๋นŒ๋“œํ•ด์ฃผ๋„๋ก ํ•ดํ•˜์ž ํ”„๋กœ์ ํŠธ ์ฝ˜์†”์— flutter build web ์„ ์ž…๋ ฅํ•˜๋„๋ก ํ•˜์ž. flutter build web ๊ทธ๋Ÿฌ๋ฉด ์ด๋Ÿฐ ๋ชจ์Šต์œผ๋กœ ์›น๋ฒ„์ „์œผ๋กœ ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ๋œ ํด๋”๋กœ ์ด๋™ํ•˜์ž. ํ”„๋กœ์ ํŠธ ..
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ €๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด ๋ฉ”์‹œ์ง€ ์ €์žฅํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค. ์šฐ์„  ๋ชจ๋ธ ํด๋ž˜์Šค๋ฅผ ์•ฝ๊ฐ„ ๋” ์ˆ˜์ •ํ•˜์˜€๋‹ค. message_model.dart import 'package:cloud_firestore/cloud_firestore.dart'; class MessageModel { final String id; //ํ•ด๋‹น ๋„ํ๋จผํŠธ์˜ ID๋ฅผ ๋‹ด๊ธฐ์œ„ํ•จ. final String content; final Timestamp sendDate; MessageModel({ this.id = '', this.content = '', Timestamp? sendDate, }):sendDate = sendDate??Timestamp(0, 0); //์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ mapํ˜•ํƒœ์˜ ์ž๋ฃŒ๋ฅผ MessageModelํ˜•ํƒœ์˜ ์ž๋ฃŒ๋กœ ..
์ด๋ฒˆ์—์„  ์ €๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด ํŒŒ์ด์–ด๋ฒ ์ด์Šค์— ์ปฌ๋ ‰์…˜ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ Flutterํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. ๋จผ์ € Firebase ์ฝ˜์†”๋กœ ์ด๋™ํ•œ๋‹ค. ์ฝ˜์†” ์ขŒ์ธก ๋ฉ”๋‰ด์—์„œ Firestore Database๋ฅผ ์„ ํƒํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ Cloud Firestore ์„น์…˜์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๊ณ  ์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ๋ผ๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋„๋ก ํ•œ๋‹ค. ์ƒˆ๋กœ์šด ์ฐฝ์ด ๋œจ๊ฒŒ ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๋ณด์•ˆ๊ทœ์น™์„ ์ ์šฉํ•˜๋ผ๊ณ  ํ•œ๋‹ค. ๊ทœ์น™์€ ๋‚˜์ค‘์— ์–ธ์ œ๋“ ์ง€ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ง€๊ธˆ์€ 30์ผ ๋™์•ˆ๋งŒ ์—ด์–ด๋‘๋Š” ํ…Œ์ŠคํŠธ ๋ชจ๋“œ๋กœ ์ž‘๋™์„ ์‹œํ‚ค๋„๋ก ํ•˜๊ฒ ๋‹ค. ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ €์žฅ๋˜๋Š” ์œ„์น˜๋ฅผ ์„ ํƒํ•˜๋ผ๊ณ  ๋œฌ๋‹ค ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •ํ•ด๋‘๊ณ  ๋„˜์–ด๊ฐ€๋„๋ก ํ•˜๊ฒ ๋‹ค. ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘..
์•ž์œผ๋กœ Flutter ๊ด€๋ จ ํฌ์ŠคํŒ…์„ ์ง‘์ค‘์ ์œผ๋กœ ์—…๋กœ๋“œํ•  ์˜ˆ์ •์ด๋‹ค. ๊ทธ๋™์•ˆ Flutter ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋Œ€๋ถ€๋ถ„ RDBMS(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์™€ WebAPI ์„œ๋ฒ„ ๊ตฌํ˜„์„ ํ†ตํ•ด ์˜จ๋ผ์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•ด ์™”์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ ์•ฑ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์š”์ฒญ ๊ฑด์ด ์ƒ๋‹น์ด ๋งŽ์•„์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Back-End์˜ ์„ ํƒ์„ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•  ํ•„์š”์„ฑ์„ ๋Š๋ผ๊ฒŒ ๋˜์—ˆ๋‹ค. ์˜ค๋Š˜๋ถ€ํ„ฐ ์—ฐ์Šตํ•ด๋ณผ Back-End ๊ธฐ์ˆ ์€ Firebase์ด๋‹ค. ์‚ฌ์‹ค NoSQL(Not-Only-SQL) ๋“ค ์ค‘ MongoDB์™€ Firestore ์ค‘ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋Š”๋ฐ MongoDB๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Node.js๋ฅผ ์ˆ™๋‹ฌํ•˜๊ณ  ์„œ๋ฒ„ ๊ตฌ์ถ•๊นŒ์ง€ ๋‹ค์‹œ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†Œ๊ทœ๋ชจ ์•ฑ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ์—” ๋น„์šฉ์ด ๋งŽ์ด ๋“ค ๊ฒƒ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋“ค์—ˆ๋‹ค...
Flutter 3.0 ์ด ์ถœ์‹œํ•œ ์ดํ›„ ๋ฐ”๋กœ ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์ด stable ์ฑ„๋„์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ณ  ๋ฐ”๋กœ windows์šฉ ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค. VisualStudio Installer๋กœ visual studio ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜์˜€๊ณ  ๋””๋ฒ„๊น… ๋ชจ๋“œ๋กœ ์‹คํ–‰์„ ํ•ด๋ณด๋ ค๋Š”๋ฐ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ค๋ฅ˜์ฝ”๋“œ๊ฐ€ ๋ฌด๋”๊ธฐ๋กœ ๋‚˜์™€๋ฒ„๋ ธ๋‹ค. ๊ตฌ๊ธ€๋ง ์กฐ์‚ฌ๋กœ ํ™•์ธํ•ด๋ณด๋˜ ์ค‘ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๋‚˜์˜จ VisualStudio Installer๊ฐ€ ํ•œ๊ธ€์„ ํฌํ•จ ๋ฌธ์ž์—ด ์ธ์‹ ์˜ค๋ฅ˜๋ผ๊ณ  ํ•˜์—ฌ ์ž„์‹œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ Visual Studio Installer๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „ ์–ธ์–ด ์„ค์ •์„ German(๋…์ผ์–ด)๋กœ ์ ์šฉํ•œ ํ›„ ์„ค์น˜๋ฅผ ํ•ด๋‘๋ฉด ์ง„ํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ตณ์ด ์–ธ์–ด๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๋Š” ์ž„์‹œ ๋ฐฉ์•ˆ์„ ์ฐพ์•˜๋Š”๋ฐ https://git..
๋ด„ ๋‚ ์”จ๊ฐ€ ์ง€๋‚˜๊ณ  ๊ฝƒ๊ฐ€๋ฃจ์˜ ๋ฌด์ฐจ๋ณ„ ๊ณต๊ฒฉ์ด ๋ฉˆ์ถ”๊ณ  ๋‚˜๋‹ˆ, ๋น„์—ผ์— ์˜ˆ๋ฏผํ•œ ๋‚˜์˜ ์ฝ”๋„ ์–ด๋Š ์ •๋„ ํšŒ๋ณต์ด ๋˜์–ด๊ฐ€๊ณ  ์žˆ์—ˆ๋‹ค. ์ถ•๋†์ฆ์œผ๋กœ ๊ณ ์ƒํ•œ ์ ์ด ์žˆ์–ด ์•ฝ์„ ๋ณต์šฉํ•ด๊ฐ€๋ฉฐ ๋น ๋ฅด๊ฒŒ ์น˜๋ฃŒ๋ฅผ ์ง„ํ–‰ํ•ด์˜จ ๋•์— ํฐ ๋ฌธ์ œ์—†์ด ์ˆจ์„ ์‰ฐ๋‹ค๋Š” ๊ถŒ๋ฆฌ๋ฅผ ๋ณด์žฅ๋ฐ›์œผ๋ฉฐ ์‚ด ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‚ด๋…„ ์ด๋ง˜๋•Œ ๋˜๋‹ค์‹œ ์ „์Ÿ์ด ์‹œ์ž‘๋˜๊ฒ ์ง€. ์—ฌ๋‹ด์€ ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ  ์ด๋ฒˆ์—๋Š” QR์ฝ”๋“œ๋กœ ํŠน์ • ๋‹จ์–ด๋ฅผ ์ถ”์ถœํ•ด์˜ค๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ˜„์žฌ Flutter์—์„œ ๊ฐ€์žฅ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ธ qr_code_scanner๋ฅผ ์ด์šฉํ•ด๋ณด๋ ค ํ•œ๋‹ค. https://pub.dev/packages/qr_code_scanner qr_code_scanner | Flutter Package QR code scanner that can be embedded..
Dogfoot_JW
'๐Ÿ‹ Flutter' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)