Menggunakan Location – 02

Buka file widgets/add_loc.dart, import library yang digunakan yaitu geolocator.

import 'package:geolocator/geolocator.dart';

Tambahkan fungsi untuk mengambil location, pada tutorial digunakan nama fungsi _determinePosition()

  Future<void> _determinePosition() async {
    bool serviceEnabled;
    LocationPermission permission;

    serviceEnabled = await Geolocator.isLocationServiceEnabled();
    if (!serviceEnabled) {
      return Future.error('Location services are disabled.');
    }

    permission = await Geolocator.checkPermission();
    if (permission == LocationPermission.deniedForever) {
      return Future.error(
          'Location permissions are permantly denied, we cannot request permissions.');
    }

    if (permission == LocationPermission.denied) {
      permission = await Geolocator.requestPermission();
      if (permission != LocationPermission.whileInUse &&
          permission != LocationPermission.always) {
        return Future.error(
            'Location permissions are denied (actual value: $permission).');
      }
    }

    final locData = await Geolocator.getCurrentPosition();

    setState(() {
      _longlat = "Lat: " +
          locData.latitude.toString() +
          " Long: " +
          locData.longitude.toString();
    });
  }

Panggil fungsi diatas saat tombol get location ditekan.

FlatButton.icon(
  icon: Icon(Icons.location_on),
  label: Text('Current Location'),
  textColor: Theme.of(context).primaryColor,
  onPressed: _determinePosition,
),

Berikut isi lengkap widgets/add_loc.dart

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

class AddLoc extends StatefulWidget {
  @override
  _AddLocState createState() => _AddLocState();
}

class _AddLocState extends State<AddLoc> {
  String _longlat = "Lokasi belum dipilih";

  Future<void> _determinePosition() async {
    bool serviceEnabled;
    LocationPermission permission;

    serviceEnabled = await Geolocator.isLocationServiceEnabled();
    if (!serviceEnabled) {
      return Future.error('Location services are disabled.');
    }

    permission = await Geolocator.checkPermission();
    if (permission == LocationPermission.deniedForever) {
      return Future.error(
          'Location permissions are permantly denied, we cannot request permissions.');
    }

    if (permission == LocationPermission.denied) {
      permission = await Geolocator.requestPermission();
      if (permission != LocationPermission.whileInUse &&
          permission != LocationPermission.always) {
        return Future.error(
            'Location permissions are denied (actual value: $permission).');
      }
    }

    final locData = await Geolocator.getCurrentPosition();

    setState(() {
      _longlat = "Lat: " +
          locData.latitude.toString() +
          " Long: " +
          locData.longitude.toString();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Container(
          height: 50,
          width: double.infinity,
          alignment: Alignment.center,
          decoration:
              BoxDecoration(border: Border.all(width: 1, color: Colors.grey)),
          child: Text(
            _longlat,
            textAlign: TextAlign.center,
          ),
        ),
        FlatButton.icon(
          icon: Icon(Icons.location_on),
          label: Text('Current Location'),
          textColor: Theme.of(context).primaryColor,
          onPressed: _determinePosition,
        ),
      ],
    );
  }
}

Aplikasi ini masih bisa dikembangkan dengan menampilkan map berdasarkan latitude dan longitude.

Namun untuk menggunakan Google Maps, dibutuhkan API KEY dan tidak FREE. Jadi penggunaan maps tidak akan kami bahas.

Dengan berakhirnya modul ini, berakhir juga Tutorial Mengakses Native Device Menggunakan Flutter.

Semoga bermanfaat.

Sharing is caring:

Leave a Comment