Flutter

플러터에서 위치정보 사용하는 법, How to use location in flutter

mayleaf 2021. 8. 25. 00:00

이 글은 로케이션, Location 패키지를 통해서 사용자의 위치정보를 사용하는 법을 다룬 글입니다.

많은 어플리케이션의 기획에서는 위치정보를 필요합니다.

예를 들어, 근처에 있는 ATM기의 위치나, 음식점의 정보를 알기 위해서는 내 위치를 알아야하죠.

사용자가 본인의 위치정보를 사용할 수 있게 하려면 어떻게 해야할까요?

Location

사용자가 본인의 좌표를 얻기 위해서 사용하는 패키지가 바로 로케이션, location입니다.

pubspec.yaml에서 디펜던시를 추가한 다음 설치를 진행합니다.

dependencies:
  location: ^4.2.0

권한 요청

먼저 디바이스의 위치 정보를 얻기 위해서는 권한, Permission을 받아야합니다.

Android

project_dir/android/app/src/main/AndroidManifest.xml 에 아래 블럭처럼 필요한 권한을 적으면 됩니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="dev.mayleaf.location_tutorial">

    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

    <application
        android:label="location_tutorial"
        android:icon="@mipmap/ic_launcher">
       ...

IOS

project_dir/ios/Runner/Info.plist 에서 아래 블럭처럼 필요한 권한을 적어주고, 사용자에게 권한을 요청할때 dialog에 보여줄 문구를 적어줍니다.

<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs GPS to track near atm-machine</string>

이렇게 진행하면 코드상에서 Location을 사용할 준비는 완료되었습니다.

예제코드

아래 코드블럭은 location 패키지의 예제 코드입니다. 주석만 붙여서 같이 보겠습니다.

Location location = new Location();

bool _serviceEnabled;
PermissionStatus _permissionGranted;
LocationData _locationData;

_serviceEnabled = await location.serviceEnabled();
if (!_serviceEnabled) {
  _serviceEnabled = await location.requestService();
  if (!_serviceEnabled) {
    return;
  }
}

_permissionGranted = await location.hasPermission();
//권한 상태를 확인합니다. 
if (_permissionGranted == PermissionStatus.denied) {
  // 권한이 없으면 권한을 요청합니다.
  _permissionGranted = await location.requestPermission();
  if (_permissionGranted != PermissionStatus.granted) {
    // 권한이 없으면 위치정보를 사용할 수 없어 위치정보를 사용하려는 코드에서 에러가 나기때문에 종료합니다.
    return;
  }
}


_locationData = await location.getLocation();
//_locationData에는 위도, 경도, 위치의 정확도, 고도, 속도, 방향 시간등의 정보가 담겨있습니다.

마무리

플러터에서 위치정보를 다루는 라이브러리인 Location을 소개하는 글을 썼습니다.

다음 글에서는 플러터에서 구글 지도 라이브러리를 사용하는 법에 대해 다루려고 합니다.

궁금하거나, 하고 싶은 말이 있으시면 댓글을 통해서 말해주시길 바랍니다.

 

감사합니다.

'Flutter' 카테고리의 다른 글

어플리케이션 출시 전에 했던 일: 앱 출시 후기 2편  (0) 2022.09.19
앱 출시 후기 1편  (1) 2022.09.06
개인정보 처리방침 작성기  (0) 2022.03.22
플러터 시작하는 방법을 다루는 글  (0) 2021.08.24
Flutter 란?  (0) 2021.08.16