개요
이번 포스트에서는 Flutter 프레임워크의 Geolocator 패키지를 이용하여 위치 기반 실시간 소상공인 정보 애플리케이션을 개발하는 방법에 대해 알아보겠습니다. Geolocator는 GPS, 네트워크 및 플랫폼별 위치 제공자를 사용하여 사용자 장치의 현재 위치를 검색하는 기능을 제공합니다.
Geolocator 패키지 설치하기
프로젝트의 pubspec.yaml 파일에 아래와 같이 Geolocator 패키지를 추가합니다.
dependencies:
geolocator: ^7.7.0
이후, 터미널에서 flutter pub get
명령어를 실행하여 패키지를 다운로드합니다.
위치 권한 획득하기
Geolocator를 사용하기 위해서는 앱에서 위치 권한을 획득해야 합니다. AndroidManifest.xml 파일과 Info.plist 파일에 아래의 코드를 추가하여 위치 권한을 설정합니다.
Android:
<manifest ...
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>
iOS:
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your location is required to provide accurate data.</string>
Geolocator 사용하기
Geolocator를 사용하여 현재 위치를 가져오는 예제 코드입니다. initState 함수에서 위치 권한을 확인하고, 권한이 허용됐다면 위치를 업데이트합니다.
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Position? _currentPosition;
@override
void initState() {
super.initState();
// 위치 권한 확인
_checkLocationPermission();
}
Future<void> _checkLocationPermission() async {
if (await Geolocator.checkPermission() == LocationPermission.denied) {
await Geolocator.requestPermission();
}
// 위치 업데이트 설정
Geolocator.getPositionStream().listen((Position position) {
setState(() {
_currentPosition = position;
});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Geolocator Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Latitude: ${_currentPosition?.latitude}',
),
Text(
'Longitude: ${_currentPosition?.longitude}',
),
],
),
),
),
);
}
}
위 예제에서는 앱의 initState 함수에서 위치 권한 확인을 수행하고, 권한이 허용되어 있지 않은 경우 사용자에게 권한 요청을 보낸 후 위치 업데이트를 설정합니다. 위치 업데이트는 Geolocator.getPositionStream().listen을 통해 수신된 위치 정보를 사용하여 수행됩니다.
위치 업데이트를 받으면 앱 화면에 현재 위치의 위도와 경도가 표시됩니다.
마무리
이 포스트에서는 Flutter의 Geolocator 패키지를 이용하여 위치 기반 실시간 소상공인 정보 애플리케이션을 개발하는 방법을 알아보았습니다. Geolocator 패키지를 사용하면 앱에서 사용자의 위치를 실시간으로 가져와 원하는 기능을 구현할 수 있습니다.
더 자세한 내용은 Geolocator 패키지 공식 문서를 참고하시기 바랍니다.