본문 바로가기

Flutter/10 app Weather

[Flutter] App Weather - 1단계 geolocator 8.2.0

오늘은 geolocator 패키지 사용법에 대해서 알아보겠습니다.

개발환경 : 윈도우11, 안드로이드 스튜디오, flutter 2.8.1

소스코드 위치 - https://github.com/mike-bskim/weather/releases/tag/start

 

Release start · mike-bskim/weather

 

github.com

 

먼저 준비 작업

 

1. 패키지 추가

 

geolocator: ^8.2.0

 

2. AndroidManifest.xml 파일에 permission 추가

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.weather">
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 이부분 추가

 

main.dart 파일

 

import 'package:flutter/material.dart';
import 'screens/loading.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Weather app',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const Loading(),
    );
  }
}

 

loading.dart 파일

 

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

class Loading extends StatefulWidget {
  const Loading({Key? key}) : super(key: key);

  @override
  _LoadingState createState() => _LoadingState();
}

class _LoadingState extends State<Loading> {

  void getLocation() async{
  // 기본설정은 아래처럼 하면 자신의 위도/경도 위치를 알수 있다.
    LocationPermission permission = await Geolocator.requestPermission();
    Position position = await Geolocator.
    getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    debugPrint(position.toString());
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () {
          debugPrint('ElevatedButton clicked~~');
            getLocation();
          },
          child: const Text(
            'Get my location',
            style: TextStyle(
                color: Colors.white
            ),
          ),
        ),
      ),
    );
  }
}

 

에뮬로 사용할 경우, 자신의 위치를 수동으로 설정할수 있어서 편리함.

 

콘솔창 출력 결과

 

I/flutter ( 8513): ElevatedButton clicked~~
I/flutter ( 8513): Latitude: 37.566535, Longitude: 126.9779683

 

 

 

[참고자료] 코딩셰프

- [https://www.youtube.com/watch?v=YqKMBQYZSmw&list=PLQt_pzi-LLfoOpp3b-pnnLXgYpiFEftLB&index=13]