1. geolocator 의존성 추가
플러터 패키지 중에 위치정보를 가져오게 할 수 있는 패키지가 있다. 최신 버전으로 의존성을 넣어 준다
pubspec.yaml
geolocator: ^최신버전
AndroidManifext.xml
<!-- 위치 권한 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
2. 위치 정보 기능 활성화 확인
Controller 페이지를 생성 해 준 후 위치 정보 기능이 활성화 되어 있는지 확인을 해주어야 한다.
bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEnabled) {
print("위치 서비스가 활성화되어 있지 않습니다.");
return;
}
3. 위치 추적 허용 확인
위치 정보 기능이 활성화 되어 있다고 하면 위치 추적이 활성화 되어 있나 확인 해 주어야 한다.
LocationPermission permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) { // 거부
print('위치 권한이 거부되었습니다.');
return;
}
}
if (permission == LocationPermission.deniedForever) { // 허용 안함
print('위치 권한이 거부되었습니다.');
return;
}
4. 현재 위치 구하기
Position position = await Geolocator.getCurrentPosition();
5. 경도 위도 구하기
dobule latitude = position.latitude;
double longitude = position.longitude;
전체코드
[ LocationPage ]
class LocationPage extends StatelessWidget {
final LocationController controller = Get.put(LocationController());
@override
Widget build(BuildContext context) {
// 현재 위치를 가져오기
controller.getCurrentPosition();
return Scaffold(
appBar: AppBar(
title: Text('현재 위치'),
),
body: Center(
child: Obx(() {
// 현재 위치가 업데이트되면 화면에 표시.
return Text(
'위도: ${controller.latitude.value}\n경도: ${controller.longitude.value}',
style: TextStyle(fontSize: 20),
textAlign: TextAlign.center,
);
}),
),
);
}
}
[ LocationController ]
import 'package:geolocator/geolocator.dart';
import 'package:get/get.dart';
class LocationController extends GetxController {
var latitude = ''.obs;
var longitude = ''.obs;
//현재위치 가져오기
Future getCurrentPosition() async {
// 기기에서 위치 정보 획득 기능이 활성화
bool serviceEndabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEndabled) {
print("위치정보 허용안함");
return null;
}
LocationPermission permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) { // 거부
print('위치 권한이 거부되었습니다.');
return;
}
}
if (permission == LocationPermission.deniedForever) { // 허용 안함
print('위치 권한이 거부되었습니다.');
return;
}
//현재 위치 구하기
Position position = await Geolocator.getCurrentPosition();
latitude.value = position.latitude.toString();
longitude.value = position.longitude.toString();
}
}
'Flutter' 카테고리의 다른 글
Flutter 모달창이 끝난 후 함수 실행하기 (0) | 2024.08.21 |
---|---|
Flutter 깜박임 없이 서서히 페이지 이동하기 (0) | 2024.08.12 |
flutter 의 비동기 처리 개선 (1) | 2024.07.16 |
flutter build 하기 (0) | 2024.07.09 |
flutter 스크롤 했을 때 AppBar color 바뀌는 오류 (0) | 2024.07.08 |