[flutter] 플러터 geolocator를 이용한 위치 기반 실시간 소상공인 정보 애플리케이션 개발

개요

이번 포스트에서는 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 패키지 공식 문서를 참고하시기 바랍니다.