[flutter] 플러터에서의 위치 기반 서비스와의 연결 방법

플러터(Flutter)는 구글에서 개발한 UI 프레임워크이며, 다양한 플랫폼에서 동작하는 애플리케이션을 만들 수 있습니다. 플러터를 사용하여 위치 기반 서비스를 연결하는 방법에 대해 알아보겠습니다.

1. 위치 정보 라이브러리 추가하기

먼저, 플러터 프로젝트에 위치 정보 기능을 사용하기 위해 위치 정보 라이브러리를 추가해야 합니다. 대표적인 위치 정보 라이브러리로는 geolocator가 있습니다. pubspec.yaml 파일을 열고 dependencies 섹션에 다음 코드를 추가하세요.

dependencies:
  geolocator: ^7.6.0

저장한 뒤, 터미널에서 flutter pub get 명령어를 실행하여 라이브러리를 다운로드합니다.

2. 위치 서비스 권한 설정하기

위치 기반 서비스를 사용하기 위해 앱이 위치 서비스에 접근할 수 있도록 권한을 설정해야 합니다. AndroidManifest.xml(Android) 및 Info.plist(iOS) 파일에서 위치 권한을 요청하는 코드를 추가하세요.

Android

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

iOS

Info.plist 파일에 다음 코드를 추가하세요.

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Location permission is required for this app to work.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location permission is required for this app to work.</string>

위치 서비스에 관련된 권한 설정은 각 플랫폼의 가이드라인에 따라 추가적인 설정이 필요할 수 있습니다.

3. 위치 정보 가져오기

위치 정보를 가져오기 위해 geolocator 라이브러리를 사용합니다. 다음은 위치 정보를 가져오는 예제 코드입니다.

import 'package:geolocator/geolocator.dart';

void getCurrentLocation() async {
  LocationPermission permission = await Geolocator.checkPermission();

  if (permission == LocationPermission.denied) {
    permission = await Geolocator.requestPermission();
    if (permission == LocationPermission.denied) {
      // 위치 권한이 거부되었습니다.
      return;
    }
  }

  if (permission == LocationPermission.deniedForever) {
    // 위치 권한이 영구적으로 거부되었습니다. 사용자에게 설정 변경을 요청하세요.
    return;
  }

  // 위치 정보 가져오기
  Position position = await Geolocator.getCurrentPosition(
    desiredAccuracy: LocationAccuracy.high,
  );

  double latitude = position.latitude;
  double longitude = position.longitude;

  print("현재 위치: ($latitude, $longitude)");
}

위 코드는 사용자의 위치에 대한 권한을 확인한 뒤, 위치 정보를 가져오는 방법을 보여줍니다. getCurrentPosition 메서드의 매개변수로는 정확도를 나타내는 LocationAccuracy 값을 전달할 수 있습니다.

위치 기반 서비스 연결을 위한 추가적인 기능들도 제공되며, 해당 라이브러리의 문서를 참조하여 필요한 기능을 구현할 수 있습니다.

참고 자료