공부/App

[Flutter] 위치 정보 권한 체크 및 좌표 전송 (WebView & GPS & SpringBoot)

골드곽 2024. 9. 28. 14:10
반응형
//Flutter
//main.dart

import 'package:geolocator/geolocator.dart';
import 'package:permission_handler/permission_handler.dart';

void main() async{
  WidgetsFlutterBinding.ensureInitialized();
  
  await _handleLocationPermission(); // 어플 켜지면 바로 실행
}

Future<void> _handleLocationPermission() async {
  var status = await Permission.location.status;
  if (!status.isGranted) {
    status = await Permission.location.request();
  }

  if (status.isGranted) {
    print('위치 권한이 허용되었습니다.');
  } else if (status.isDenied) {
    print('위치 권한이 거부되었습니다.');
  } else if (status.isPermanentlyDenied) {
    openAppSettings();
  }
}

//home_screen.dart (webview영역 
LocationPermission permission = await Geolocator.checkPermission();

if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
}

Position position = await Geolocator.getCurrentPosition(
  desiredAccuracy: LocationAccuracy.high);
  
var data = {
    'lat': position.latitude.toString(),
    'lon': position.longitude.toString(),
}
print(data);

var response = await http.post(
    Uri.parse(springBootApiUrl),  //SpringBoot PostMapping uri 포함해서 보내면됌 
    headers: <String, String>{
      'Content-Type': 'application/json; charset=UTF-8',
    },
    body: jsonEncode(datas),
);
반응형