inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

위치권한 확인하는 함수 작성하기

LocationPermission 에러

해결된 질문

224

알로하

작성한 질문수 5

0

import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

class HomeScreen extends StatefulWidget {
  

  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final CameraPosition initialPosition = CameraPosition(
    target: LatLng(37.5214, 126.9246),
    zoom: 17
    );


    @override
    initState(){
      super.initState();

      checkPermission();
    }

    checkPermission( ) async {
      final inLocationEnabled = await Geolocator.isLocationServiceEnabled();

      if(!inLocationEnabled){
        throw Exception('위치 기능을 활성화 해주세요');
      }

      LocationPermission checkedPermission = await Geolocator.checkPermission();

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

      if(checkedPermission != LocationPermission.whileInUse || checkedPermission != LocationPermission.always) {
        throw Exception('권한을 허가해 주세요');
      }
    }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Expanded(
            child: GoogleMap(
              initialCameraPosition: initialPosition,
              )
          )
        ],
      ),
    );
  }
}

강의를 보면서 공부 도중 테스트를 하는데

LocationPermission.whileInUse

LocationPermisson.always 의 if문에서 Exception으로 던지는데 해결방법을 모르겠습니다.

flutter 클론코딩 locationpermission

답변 2

0

코드팩토리

안녕하세요!

어떤 에러를 던진다는 말씀이실까요?

에러가 있을때는 어떤 예외인지를 정확히 알려주셔야합니다. 그렇지 않으면 문제를 파악 할 수 있는 방법이 없습니다.

감사합니다!

0

알로하

코드를 작성하고 재시작 했을때

권한관련 창이뜨고 항상사용이나 앱사용때만 사용 버튼늘 누르면 제가 작성한 throw exception으로 가게 됩니다.

0

코드팩토리

에러가 '무엇'인지에 대한 질문입니다. 에러 메세지를 알려주세요!

0

알로하

D/EGL_emulation(11327): app_time_stats: avg=175.23ms min=23.00ms max=693.03ms count=6

E/flutter (11327): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Exception: 권한을 허가해 주세요

E/flutter (11327): #0 HomeScreenState.checkPermission (package:choolcheck/screen/home_screen.dart:42:9)

E/flutter (11327): <asynchronous suspension>

E/flutter (11327):

 

 

이것을 보내드리면 될까요?

0

알로하

코드를 봤을 때 and 가 아닐까 하고 고쳐서

다음강의를 진행했는데 바로 오류라고 설명해 주시네요.

해결됐습니다. 감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

알로하님의 질문과 관련하여, LocationPermission 에러 처리와 관련된 구체적인 해결 방안으로 질문에 포함된 코드의 로직을 상세히 살펴볼 필요가 있습니다. 특히, 권한 요청 과정에서 발생하는 문제를 해결하기 위해 로직 내 조건부 처리에 주의를 기울여야 합니다.

알로하님의 코드에서는 LocationPermission의 상태를 검사하여, 사용자의 위치 서비스 활성화 및 권한 부여 상태를 확인하고 있습니다. 코드 중 if(checkedPermission != LocationPermission.whileInUse || checkedPermission != LocationPermission.always) 조건문에서 예외를 발생시키는 부분이 문제의 핵심입니다. 이 조건문은 whileInUse 또는 always 권한이 부여되지 않았을 경우 예외를 발생시키도록 설계되었습니다. 그러나, 이 로직에는 문제가 있을 수 있습니다.

비슷한 주제로 질문이 이전에 있었던 것과 관련해, 코드팩토리 강사님께서는 권한 요청 과정에서 LocationPermission.denied 상태의 처리에 대해 자세히 설명하셨습니다. 그러나 알로하님의 경우는 denied 상태가 아닌, whileInUsealways에 대한 권한 부여 문제를 경험하고 계십니다.

불행히도, 제공된 정보 속에서 직접적으로 알로하님의 문제를 해결하는 명시적인 답변은 찾을 수 없었습니다. 하지만, 권한 요청과 관련된 문제 해결 방법을 탐색하는 데 참고가 될 수 있는 이전 질문 중 하나를 여기에 링크합니다: “LocationPermission.denied관련 질문입니다”에서는 권한 요청이 거부됐을 때의 처리 방법에 대해 설명하고 있습니다. 알로하님의 코드에서 발생한 문제는 다를 수 있지만, 권한 요청 과정과 관련된 로직을 이해하는 데 도움이 될 수도 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

198강 (){onTap(e);}의 이해 돕기

0

26

1

video_call 플러그인 설치후 에러 발생

0

45

1

SDK 안드로이드 설치 질문!

0

60

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

92

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

70

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

55

1

플레이스토어

0

59

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

55

1

가이드라인 질문

0

57

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

76

1

emulator 실행 오류

0

93

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

71

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

43

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

53

1

video_call 플러그인 설치시 에러문제

0

64

1

children 안의 if 문에서 { } 못쓰는 이유?

0

48

1

이렇게 오류가 떠요

0

63

1

AppBar 사용했는데

0

61

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

56

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

63

1

Video Player 프로젝트에 대한 추가 질문

0

53

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

42

1

geolocator 오류때문에 개발진행이 불가능입니다

0

63

1

API 관련 이슈

0

86

2