Flutter-geolocator: рдЕрдиреБрдорддрд┐ рдкрд░ рджреБрд░реНрдШрдЯрдирд╛ рдЕрд╕реНрд╡реАрдХреГрдд

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рджрд┐рд╕ре░ 2018  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Baseflow/flutter-geolocator

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ

рд╕реНрдерд╛рди рдЕрдиреБрдорддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╕рдордп рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рди рдЕрдиреБрдорддрд┐ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред

рдбрд╛рд░реНрдЯ рддреНрд░реБрдЯрд┐: рд╣реИрдВрдбрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж:
PlatformException (PERMISSION_DENIED, рд╕реНрдерд╛рди рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЕрд╕реНрд╡реАрдХреГрдд, рд╢реВрдиреНрдп)

0 Geolocator._handleInvalidPermissions (рдкреИрдХреЗрдЬ:geolocator/geolocator.dart:197:7)

1 Geolocator.getCurrentPosition (рдкреИрдХреЗрдЬ:geolocator/geolocator.dart:106:7)

2 SignupScreenPageState._submitAction (рдкреИрдХреЗрдЬ: locum_mate/Screens/signup.dart:126:10)

3 рд╕рд╛рдЗрдирдЕрдкрд╕реНрдХреНрд░реАрдирдкреЗрдЬрд╕реНрдЯреЗрдЯ.рдмрд┐рд▓реНрдбрд╡рд┐рдЬреЗрдЯред.(рдкреИрдХреЗрдЬ: рд▓реЛрдХрдо_рдореЗрдЯ/рд╕реНрдХреНрд░реАрди/рд╕рд╛рдЗрдирдЕрдк.рдбрд╛рд░реНрдЯ:реиремрез:рейрез)

4 _InkResponseState._handleTap (рдкреИрдХреЗрдЬ: рд╕реНрдкрдВрджрди/src/рд╕рд╛рдордЧреНрд░реА/ink_well.dart:507:14)

5 _InkResponseState.buildред(рдкреИрдХреЗрдЬ: рд╕реНрдкрдВрджрди/src/рд╕рд╛рдордЧреНрд░реА/ink_well.dart:релремреи:рейреж)

6 GestureRecognizer.invokeCallback (рдкреИрдХреЗрдЬ: Flutter/src/рдЬреЗрд╕реНрдЪрд░/рд░рд┐рдХрдЧреНрдирд┐рдЬрд░.рдбрд╛рд░реНрдЯ:102:24)

7 TapGestureRecognizer._checkUp (рдкреИрдХреЗрдЬ: рд╕реНрдкрдВрджрди/src/рдЬреЗрд╕реНрдЪрд░/tap.dart:242:9)

8 TapGestureRecognizer.handlePrimaryPointer ( рдкреИрдХреЗрдЬ: рд╕реНрдкрдВрджрди <тАж>

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдЙрдореНрдореАрдж рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдореБрдЭреЗ рд╢реВрдиреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд╕рдХреЗрдВред

рдкреНрд░рдЬрдирди рдЪрд░рдг

pubspec.yaml рдореЗрдВ рдкрдм рдЖрдпрд╛рдд рдХрд░реЗрдВ

рдХрд┐рд╕реА рднреА рдмрдЯрди рдЯреИрдк рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВ
рдкреНрд░рдпрддреНрди {
рд╕реНрдерд┐рддрд┐ рд╕реНрдерд┐рддрд┐ = рдкреНрд░рддреАрдХреНрд╖рд╛рд░рдд рдЬрд┐рдпреЛрд▓реЛрдХреЗрдЯрд░ ()
.getCurrentPosition (рд╡рд╛рдВрдЫрд┐рдд рд╕рдЯреАрдХрддрд╛: рд╕реНрдерд╛рди рд╕рдЯреАрдХрддрд╛ред рдЙрдЪреНрдЪ);
} рдХреИрдЪ (рдИ) {
рдкреНрд░рд┐рдВрдЯ (рдИ);
}

рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред

рд╡рд┐рдиреНрдпрд╛рд╕

рд╕рдВрд╕реНрдХрд░рдг: 1.0.1

[тЬУ] рд╕реНрдкрдВрджрди (рдЪреИрдирд▓ рдорд╛рд╕реНрдЯрд░, vрез.реж.рез-рдкреНрд░реА.реи, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ резреж.резрек резреордПрейреорекрдП рдкрд░, рд▓реЛрдХреЗрд▓ рдПрди-рдЬреАрдмреА)
[тЬУ] рдПрдВрдбреНрд░реЙрдЗрдб рдЯреВрд▓рдЪреЗрди - рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд (рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ реирео.реж.рей)
[тЬУ] рдЖрдИрдУрдПрд╕ рдЯреВрд▓рдЪреЗрди - рдЖрдИрдУрдПрд╕ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд (рдПрдХреНрд╕рдХреЛрдб резреж.рез)
[тЬУ] рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ (рд╕рдВрд╕реНрдХрд░рдг рей.реи)
[тЬУ] рд╡реА.рдПрд╕. рдХреЛрдб (рд╕рдВрд╕реНрдХрд░рдг рез.реиреп.рез)
[тЬУ] рдХрдиреЗрдХреНрдЯреЗрдб рдбрд┐рд╡рд╛рдЗрд╕ (рез рдЙрдкрд▓рдмреНрдз)

тАв рдХреЛрдИ рдЧрдбрд╝рдмрдбрд╝реА рдирд╣реАрдВ рдорд┐рд▓реА!

рдордВрдЪ:

  • [рдПрдХреНрд╕]: рдЖрдИрдлреЛрди: рдЖрдИрдУрдПрд╕
  • [ ] :рд░реЛрдмреЛрдЯ: Android

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@YogeshLegendkiller, @kaumudpa, рд╕рдорд╛рдзрд╛рди @jaumard рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣рд▓ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рддрд░реАрдХрд╛ рд╣реИред

рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ checkGeolocationPermissionStatus рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ getCurrentPosition , getLastKnownPosition рдпрд╛ getPositionStream рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд┐рддрд┐ PermissionStatus.granted рд╕реЗрдЯ рд╣реИред getPositionStream рддрд░реАрдХреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

Geolocator geolocator = Geolocator();
GeolocationStatus status = await geolocator.checkGeolocationPermissionStatus();
if (status == GeolocationStatus.granted) {
    Position position = await geolocator.getCurrentPosition();
}

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ?

рдЗрд╕рдХрд╛ рдХреЛрдИ рдЙрдкрд╛рдп?

@YogeshLegendkiller @kaumudpa рдпрджрд┐ рдЖрдк рдПрдХ рдХрд╛рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдмрд╕ рдХреЙрд▓ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ PlatformException рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред

@YogeshLegendkiller, @kaumudpa, рд╕рдорд╛рдзрд╛рди @jaumard рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣рд▓ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рддрд░реАрдХрд╛ рд╣реИред

рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ checkGeolocationPermissionStatus рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ getCurrentPosition , getLastKnownPosition рдпрд╛ getPositionStream рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд┐рддрд┐ PermissionStatus.granted рд╕реЗрдЯ рд╣реИред getPositionStream рддрд░реАрдХреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

Geolocator geolocator = Geolocator();
GeolocationStatus status = await geolocator.checkGeolocationPermissionStatus();
if (status == GeolocationStatus.granted) {
    Position position = await geolocator.getCurrentPosition();
}

рдЕрдиреБрдорддрд┐ рдХреИрд╕реЗ рдорд╛рдВрдЧреЗрдВ?

@ abdullah4one рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ permission_handler рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрдиреБрдорддрд┐ рдорд╛рдВрдЧреЗрдЧрд╛:

import 'package:permission_handler/permission_handler.dart';

Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler().requestPermissions([PermissionGroup.location]);

рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рджреЗрд░ рд╣реЛ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рднреА рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рдерд╛ рдЬрд╣рд╛рдВ рдРрдк рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдорд╛рдВрдЧ рд░рд╣рд╛ рдерд╛ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдорд╛рдВрдЧреА рдЧрдИ рдереА рдЗрд╕рд▓рд┐рдП iOS рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ "location_permissions" рдирд╛рдо рдХрд╛ рдПрдХ рдкреИрдХреЗрдЬ рдорд┐рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдорд╛рдВрдЧрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ

  1. рдЗрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ "pubspec.yaml" рдореЗрдВ "location_permissions: 3.0.0+1" рдЬреЛрдбрд╝реЗрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рд╕реНрдкрдВрджрди рез.реиреи.реж рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рд╕реНрдкрдВрджрди реи.реж рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  2. рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдХрд░реЗрдВ

    рдЖрдпрд╛рдд ' рдкреИрдХреЗрдЬ: location_permissions/location_permissions.dart ';

  3. рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ рдЬрд╣рд╛рдБ рдЖрдк рдЕрдиреБрдорддрд┐ рдорд╛рдБрдЧрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред (рдЗрд╕реЗ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдкрд╣рд▓реЗ рдкреЗрдЬ рдкрд░ рдЬреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред)

     <strong i="16">@override</strong>
      void initState() {
       ....
      if (Platform.isIOS) {
        location_permission();
      }
      ....
    

    }

  4. рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ

    рд╢реВрдиреНрдп рд╕реНрдерд╛рди_рдкрд░рдорд┐рд╢рди () async {
    рдЕрдВрддрд┐рдо рдЕрдиреБрдорддрд┐ рд╕реНрдерд┐рддрд┐ рдЕрдиреБрдорддрд┐ = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ _getLocationPermission ();
    рдЕрдЧрд░ (рдЕрдиреБрдорддрд┐ == PermissionStatus.grand) {
    рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ = рдЬрд┐рдпреЛрд▓реЛрдХреЗрдЯрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред getCurrentPosition (
    рд╡рд╛рдВрдЫрд┐рдд рд╕рдЯреАрдХрддрд╛: рд╕реНрдерд╛рди рд╕рдЯреАрдХрддрд╛ред рд╕рд░реНрд╡реЛрддреНрддрдо);

      // Use the position to do whatever...
    }
    

    }

    рднрд╡рд┐рд╖реНрдп_getLocationPermission () async {
    рдЕрдВрддрд┐рдо рдЕрдиреБрдорддрд┐ рд╕реНрдерд┐рддрд┐ рдЕрдиреБрдорддрд┐ = рд╕реНрдерд╛рди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ()
    .checkPermissionStatus (рд╕реНрддрд░: LocationPermissionLevel.location);

    if (permission != PermissionStatus.granted) {
      final PermissionStatus permissionStatus = await LocationPermissions()
          .requestPermissions(
              permissionLevel: LocationPermissionLevel.location);
    
      return permissionStatus;
    } else {
      return permission;
    }
    

    }

рдмрд╕ рдЕрдм рдЖрдкрдХреЛ iOS рдРрдк рдореЗрдВ рдПрдХ рдкреЙрдкрдЕрдк рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд▓реЛрдХреЗрд╢рди рдХреА рдкрд░рдорд┐рд╢рди рдорд╛рдВрдЧреЗрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕