택시팟 매칭 플랫폼: Taxi Hexa
UNIST의 입지적 특성상 택시를 타고 시내나 울산역으로 이동하는데 많은 비용이 들어 갑니다. 이를 해결하기 위해 택시를 타는 사람들을 모아 택시비를 절약할 수 있도록 도와주는 택시팟 매칭 플랫폼 Taxi Hexa를 개발하였습니다.
전체 프로젝트 소개는 여기를 참조해주세요
![create-taxi-party](https://private-user-images.githubusercontent.com/72839543/260670693-fe290fd2-48d5-4a86-902d-b50565e38980.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MTI0MzEsIm5iZiI6MTczODkxMjEzMSwicGF0aCI6Ii83MjgzOTU0My8yNjA2NzA2OTMtZmUyOTBmZDItNDhkNS00YTg2LTkwMmQtYjUwNTY1ZTM4OTgwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDA3MDg1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg4MDAxYjllODIwOTg3N2Q3MjgxMGJlNGM0NTA2ZmY4MGM1NTJjNDcyZDY3ZTFmMGExYTQxMTQ2MTBiNjJiNGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.qFp6JOZXz2cOc8pdLm_bcWxxQh0oi-Dd2kn3i7nQTDk)
![join-taxi-party](https://private-user-images.githubusercontent.com/72839543/260670722-30f9147a-baf3-4106-b0ef-d24d58afcbe5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MTI0MzEsIm5iZiI6MTczODkxMjEzMSwicGF0aCI6Ii83MjgzOTU0My8yNjA2NzA3MjItMzBmOTE0N2EtYmFmMy00MTA2LWIwZWYtZDI0ZDU4YWZjYmU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDA3MDg1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY0MTdkNTM1MzcxZDk4Y2YxZTZjMjAwNDdiOWYyZWZlMWE0Y2U5NDJmZmE4ODAxYWExNjQ3ZWVmYTQ2MDRlMTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.7pDSQe9V-B3L3fgpqvLMSRjDKtrcZjy-Y7Y6Kp0Cfww)
- Flutter
- BLoC
- Google Maps Platform
본 앱에서는 flutterfire 패키지를 사용하고, firebase 사용을 위해 안드로이드와 iOS에 각각 설정을 해줘야합니다.
아래 도큐멘테이션을 참조해주세요.
https://firebase.flutter.dev/docs/manual-installation/android
아래 도큐멘테이션을 참조해주세요.
https://firebase.flutter.dev/docs/manual-installation/ios
본 앱에서는 google_maps_flutter 패키지를 사용하는데, public으로의 API Key 유출을 막기 위해 environment variable을 통해 google maps에 api key를 provide 해줍니다.
google-maps-api-key는 프로젝트 채팅방(카톡방)을 확인하거나 채팅방에 요청해주세요.
android/local.properties
에 다음과 같이 추가합니다 (파일이 없다면 새로 생성합니다).
# android/local.properties
# ...
googleMapsApiKey=<google-maps-api-key>
ios/Flutter/Debug.xcconfig
와 ios/Flutter/Release.xcconfig
에 다음과 같이 추가합니다 (파일이 없다면 새로 생성합니다).
// ios/Flutter/Debug.xcconfig
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
GOOGLE_MAPS_API_KEY=<google-maps-api-key>
// ios/Flutter/Release.xcconfig
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
GOOGLE_MAPS_API_KEY=$(GOOGLE_MAPS_API_KEY_ENVIRONMENT_VARIABLE)
다음 커맨드를 통해 디버그 모드로 앱을 실행합니다.
flutter emulators # 에뮬레이터의 리스트를 반환합니다
flutter emulators --launch <emulator-id> # 에뮬레이터를 실행합니다
flutter run # 에뮬레이터에 앱을 설치하고 실행합니다
외부 API와 통신하여 받아오는 json들은 json_serializable 패키지를 사용하여 객체화합니다.
위 패키지의 사용은 공식 문서를 참조해주세요.
위 패키지로 직렬화 모듈들을 만들었다면, 아래 코드를 사용해 나머지 code generation task를 완료하십시오.
dart run build_runner build
flutter pub run build_runner build