์ „์ฒด ๊ธ€

๐Ÿ“ฑ ๊ฐœ๋ฐœ์ผ์ง€

[โœˆ๏ธ] ํ•ญ๊ณต๊ถŒ ๊ฐ€๊ฒฉ ๊ฒ€์ƒ‰ ์•ฑ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ <6> ํฌ๋กค๋ง

์ด์ œ ์‹ค์ œ ํ•ญ๊ณต๊ถŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•œ ์ž‘์—…์„ ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. ๋จผ์ € ํ•ญ๊ณต๊ถŒ์ด ํŒ๋งค๋˜๋Š” ์‹œ์Šคํ…œ๋ถ€ํ„ฐ ์•Œ์•„๋ณด๋ฉด, ํ•ญ๊ณต์‚ฌ ์ž์ฒด ํ™ˆํŽ˜์ด์ง€์—์„œ ํŒ๋งคํ•˜๋Š” ํ•ญ๊ณต๊ถŒ์ด ์žˆ๊ณ  ์Šค์นด์ด์Šค์บ๋„ˆ๊ฐ™์€ ์‚ฌ์ดํŠธ์— ์ œ๊ณตํ•˜๋Š” ํ•ญ๊ณต๊ถŒ๋“ฑ์ด ๋”ฐ๋กœ ์žˆ์–ด์„œ ์–ด๋””์—๋Š” ์˜ฌ๋ผ์™€์žˆ๋Š”๋ฐ ์–ด๋””์—๋Š” ์—†๊ฑฐ๋‚˜, ๊ฐ™์€ ํ•ญ๊ณตํŽธ์ด๋ผ๋„ ๊ฐ€๊ฒฉ์ด ๋‹ค๋ฅธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๊ณณ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ ๋’ค, ํŒ๋งค์ฒ˜๋ณ„๋กœ ๊ฐ€๊ฒฉ์„ ๋ณด์—ฌ์ฃผ๋Š” ์‹์œผ๋กœ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋จผ์ € ์„œ๋ฒ„์ธก์˜ ์š”์ฒญ, ๋ฐ˜ํ™˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ˆ˜์ •ํ•ด์ค€๋‹ค.from fastapi import FastAPIfrom pydantic import BaseModelfrom typing import Listfrom search_naver import search_naver_flightsapp = Fast..

๐Ÿ“ฑ ๊ฐœ๋ฐœ์ผ์ง€

[โœˆ๏ธ] ํ•ญ๊ณต๊ถŒ ๊ฐ€๊ฒฉ ๊ฒ€์ƒ‰ ์•ฑ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ <5> ์„œ๋ฒ„ ์—ฐ๋™

ํ•ญ๊ณต๊ถŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ• ๊ฑด๋ฐ, ํ”Œ๋Ÿฌํ„ฐ์—์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋ฉด ํ•ญ๊ณต์‚ฌ์—์„œ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋Œ€์‹  ์ค‘๊ฐ„ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋จผ์ € ํŒŒ์ด์ฌ์ด ์„ค์น˜๋˜์–ด์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ํ„ฐ๋ฏธ๋„์—์„œ pip install fastapi uvicorn๋กœ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ธ FastAPI๋ฅผ ์„ค์น˜ํ•œ๋‹ค. ์ดํ›„ server๋ฅผ ๋‹ด๋‹นํ•  ํŒŒ์ผ์„ ๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ๋งŒ๋“ค๊ณ  (๋ฐ์ดํ„ฐ๋Š” ์ผ๋‹จ ํ•˜๋“œ์ฝ”๋”ฉ)from fastapi import FastAPI, Queryapp = FastAPI()@app.get("/search")def search(from_city: str = Query(..., alias="from"), to_city: str = Query(..., alias="to"), date: str = Query(...)): ret..

๐Ÿ“ฑ ๊ฐœ๋ฐœ์ผ์ง€

[โœˆ๏ธ] ํ•ญ๊ณต๊ถŒ ๊ฐ€๊ฒฉ ๊ฒ€์ƒ‰ ์•ฑ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ <4> ์‚ฌ์šฉ์ž ์ž…๋ ฅ UI

์ด๋ฒˆ์—” ํ•ญ๊ณต๊ถŒ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.๋จผ์ € ํ•„์š”ํ•œ UI ์š”์†Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์—ฌํ–‰์ง€ ์„ ํƒ (๋“œ๋กญ๋‹ค์šด) ๋‚ ์งœ ์ž…๋ ฅ (์บ˜๋ฆฐ๋”) ๊ฒ€์ƒ‰ ์‹œ์ž‘ (๋ฒ„ํŠผ) ์ถœ๋ฐœํŽธ / ๋„์ฐฉํŽธ (ํ† ๊ธ€) 1. ํ•ญ๊ณต์‚ฌ ์ด๋ฆ„ 2. ์ถœ๋ฐœ ์‹œ๊ฐ„ 3. ๊ฐ€๊ฒฉ 4. ์˜ˆ๋งค ๋ฒ„ํŠผ (์œ„ 4๊ฐ€์ง€๋ฅผ ๋ฌถ์–ด ๊ฐ€๊ฒฉ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฆฌ์ŠคํŠธ)์ •๋„๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ž…๋ ฅ ์š”์†Œ๋ถ€ํ„ฐ ๊ตฌํ˜„ํ•ด๋ณด์ž.class SearchPage extends StatefulWidget { const SearchPage({super.key}); @override State createState() => _SearchPageState();} ๋“œ๋กญ๋‹ค์šด์ด๋‚˜ DatePicker, Switch๋“ฑ์€ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋Š” UI์ด๊ธฐ ๋•Œ๋ฌธ์— setState()๋กœ ์„ ํƒ๊ฐ’์„ ํ™”๋ฉด์— ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€์ƒ‰ํŽ˜์ด์ง€๋Š” State..

๐Ÿ“ฑ ๊ฐœ๋ฐœ์ผ์ง€

[โœˆ๏ธ] ํ•ญ๊ณต๊ถŒ ๊ฐ€๊ฒฉ ๊ฒ€์ƒ‰ ์•ฑ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ <3> ์›น ๋ทฐ

์ฒซ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์ธ ์ด๋ฒคํŠธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ๊ตฌํ˜„ํ•ด๋ณด์ž. ์™ธ๋ถ€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ์•ฑ ๋‚ด๋ถ€์—์„œ ์ด๋ฒคํŠธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด '์›น ๋ทฐ' ํ˜•์‹์„ ์‚ฌ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋จผ์ € pubspec.yaml ํŒŒ์ผ์˜ ์ข…์†์„ฑ(dependencies)์—dependencies: flutter: sdk: flutter webview_flutter: ^4.13.1์ด๋Ÿฐ์‹์œผ๋กœ ์ตœ์‹ ๋ฒ„์ „์„ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ ํ„ฐ๋ฏธ๋„์—์„œ flutter pub get ์œผ๋กœ ์›น ๋ทฐ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์ค€๋‹ค. ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ์›น๋ทฐ ๊ถŒํ•œ ์„ค์ •์„ ์œ„ํ•ดandroid/app/src/main/AndroidManifest.xml ํŒŒ์ผ์—android:usesCleartextTraffic="true"๋‘ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์ด์ œ ์ฝ”๋“œ๋กœ ๋Œ์•„๊ฐ€์„œclass AirlineEvent ..

๐Ÿ“ฑ ๊ฐœ๋ฐœ์ผ์ง€

[โœˆ๏ธ] ํ•ญ๊ณต๊ถŒ ๊ฐ€๊ฒฉ ๊ฒ€์ƒ‰ ์•ฑ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ <2> ํƒญ ์ปจํŠธ๋กค๋Ÿฌ

๋ณธ๊ฒฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด UI ๊ตฌ์กฐ๋ถ€ํ„ฐ ์ƒ๊ฐํ•ด๋ณด์ž.ํฌ๊ฒŒ ์ด๋ฒคํŠธํŽ˜์ด์ง€ ํƒญ, ํ•ญ๊ณต๊ถŒ ๊ฒ€์ƒ‰ ํƒญ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ์„œ ๋ณด์—ฌ์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฒˆ์—๋Š” ์ผ๋‹จ ํ”Œ๋Ÿฌํ„ฐ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ตํžˆ๊ณ , ํƒญ ๊ตฌ๋ถ„๊นŒ์ง€ ๊ตฌํ˜„ํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค. ์ฝ”๋“œ ๋ถ€๋ถ„์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ main.dart ํŒŒ์ผ์„ ๋ณด๋ฉด ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, '์œ„์ ฏ' ๋‹จ์œ„๋กœ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ main() ํ•จ์ˆ˜๊ฐ€ ์‹œ์ž‘์ ์ด ๋˜๊ณ , ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ฉดclass MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'ํ•ญ๊ณต๊ถŒ ๊ฐ€๊ฒฉ ๋น„๊ต', th..

๐Ÿ“ฑ ๊ฐœ๋ฐœ์ผ์ง€

[โœˆ๏ธ] ํ•ญ๊ณต๊ถŒ ๊ฐ€๊ฒฉ ๊ฒ€์ƒ‰ ์•ฑ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ <1> ์„ค์น˜

์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ์ž๋ฐ”๋‚˜ ์ฝ”ํ‹€๋ฆฐ ์–ธ์–ด๋กœ ๊ฐœ๋ฐœํ•ด์•ผํ•˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ, ์š”์ฆ˜์—๋Š” ๋ฆฌ์•กํŠธ๋‚˜ ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ํ”Œ๋Ÿฌํ„ฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋‹ˆ Dart๋ผ๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ iOS, ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ชจ๋‘ ์ž‘๋™์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์„ฑ๋Šฅ๋„ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•ฑ ๊ฐœ๋ฐœ์„ ๋ฐฐ์šธ ๋•Œ ์ž…๋ฌธํ•˜๊ธฐ ์ข‹์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๊ณ  ํ•ด์„œ ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐœ๋ฐœํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. [ ์„ค์น˜ ๋‹จ๊ณ„ ]ํฌ๊ฒŒ 3๊ฐ€์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.1. VSCode2. Flutter3. Android Studio ๋จผ์ € VSCode๋Š” ๊น”๋ ค์žˆ์–ด์„œ Flutter extension์„ ์„ค์น˜ํ•˜๊ณ  ํ”Œ๋Ÿฌํ„ฐ ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ SDK๋„ ์„ค์น˜ํ–ˆ๋‹ค.๋‹ค์Œ์œผ๋กœ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋„ ์ถ”๊ฐ€ํ•œ ํ›„, ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ํ„ฐ๋ฏธ๋„์— ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌflutter pub get์˜์กด์„ฑ(ํŒจ..

jinwon0707
jinwon0707