inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

한 페이지에서 벗어나지지 않습니다 ㅠ

482

김지현

작성한 질문수 25

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({Key? key}) : super(key: key);

 

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

 

class HomeScreenState extends State<HomeScreen> {

static final LatLng companyLatLng = LatLng( 37.4493182,

126.6601906,

); //위도 경도 지정하기

static final CameraPosition initialPosition = CameraPosition(

target: companyLatLng,

zoom: 15, );

static final Circle circle = Circle(

circleId: CircleId('circle'),

);

@override Widget build(BuildContext context) { return Scaffold(

appBar: renderAppBar(),

body: FutureBuilder(

future: checkPermission(),

builder: (BuildContext context, AsyncSnapshot snapshot){

if(snapshot.connectionState == ConnectionState.waiting){

return Center( child: CircularProgressIndicator(),

);

}

if(snapshot.data == '위치 권한이 허가되었습니다.'){ return Column(

children: [

_CustomGoogleMap(

initialPosition: initialPosition,

),

_ChoolcheckButton(),

],

);

}

 

return Center(

child: Text(snapshot.data),

);

},

),

);

}

 

Future<String> checkPermission() async {

final isLocationEnabled = await Geolocator.isLocationServiceEnabled();

if (!isLocationEnabled) {

return '위치 서비스를 활성화 해주세요.';

}

 

LocationPermission checkPermission = await Geolocator.checkPermission();

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

if (checkPermission == LocationPermission.denied) { return '위치 권한을 허가해주세요.';

}

}

if (checkPermission == LocationPermission.deniedForever) {

return '앱의 위치 권한을 세팅에서 허가해주세요.';

}

return '앱의 위치 권한이 허가되었습니다.';

}

AppBar renderAppBar() {

return AppBar(

title: Center(

child: Text( '오늘도 출근',

style: TextStyle(

color: Colors.blue,

fontWeight: FontWeight.w700,

),

),

),

backgroundColor: Colors.white,

);

}

}

 

class _CustomGoogleMap extends StatelessWidget { final CameraPosition initialPosition;

 

const _CustomGoogleMap({

required this.initialPosition,

Key? key }) : super(key: key);

 

@override

Widget build(BuildContext context) {

return Expanded(

flex: 2,

child: GoogleMap(

mapType: MapType.normal,

initialCameraPosition: initialPosition, myLocationEnabled: true,

myLocationButtonEnabled: false,

),

);

}

}

 

class ChoolcheckButton extends StatelessWidget { const ChoolcheckButton({Key? key}) : super(key: key);

@override Widget build(BuildContext context) { return Expanded( child: Text(

'출근',

),

);

}

}

flutter 클론코딩 맵만들기

답변 3

0

코드팩토리

제공해주신 코드를 실행해봤는데 단순한 실수를 하셔서 힌트만 드리도록 하겠습니다. if문을 확인해보시고 정확한 값을 비교하고 있는지 자세히 한글자씩 봐보세요!

감사합니다.

0

김지현

선생님, 말씀대로 오타 수정하고도 결국 화면의 차이를 만드는 줄을 발견했는데요,

<정상 맵으로 보여주는 코드>

return '위치 권한이 허가 되었습니다.';
}

<비정상 화면으로 보여주는 코드>

return '앱의 위치 권한이 허가 되었습니다.';
}

따라서 "앱의" 라는 문구가 들어가는지에 따라 화면이 달라졌습니다. 이럴 수가 있는걸까요??

1

코드팩토리

다행히도 달라지는게 당연합니다. 두 String은 완전 다른 값이니까요. 모든 프로그래밍 언어에서 “위치 권한이 허가 되었습니다”와 “앱의 위치 권한이 허가 되었습니다”는 다른 값으로 인식 됩니다. 점 하나가 달라도, 띄어쓰기 하나가 달라도 그렇습니다. 그렇지 않는다면 전세계 모든 서버가 무너질 것입니다. 제 다트언어 강의를 기억해보시면 string 오타의 가능성을 줄이기위해 enum 같은걸 사용하기도 합니다.

0

김지현

위의 화면으로 수업을 듣고 있는데, 제 화면은 아래의 화면이고 여기서 변경되지 않습니다.

0

코드팩토리

안녕하세요!

한 페이지에서 벗어나지지 않는다는게 무슨 말씀이신지 잘 모르겠습니다.

스크린은 원래 원스크린인 프로젝트입니다.

조금만 더 정확히 부가 설명을 해주시면 도와드리도록 하겠습니다!

감사합니다!

0

김지현

제가 올린 이미지 화면에서 머물러 있어 맵을 작성할 수가 없습니다. 맵 화면이 나오지 않습니다.

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

0

40

1

SDK 안드로이드 설치 질문!

0

55

1

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

0

90

1

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

0

63

1

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

0

51

1

플레이스토어

0

57

1

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

0

52

1

가이드라인 질문

0

55

0

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

0

75

1

emulator 실행 오류

0

91

3

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

0

68

1

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

0

41

1

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

0

51

1

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

0

61

1

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

0

45

1

이렇게 오류가 떠요

0

61

1

AppBar 사용했는데

0

60

2

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

0

54

1

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

0

61

1

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

0

50

0

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

0

38

1

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

0

59

1

API 관련 이슈

0

82

2

VoidCallback 뒤에 null 연산자 표기에 관한 질문

0

41

1