рд╕реНрдерд╛рди рдЕрдиреБрдорддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╕рдордп рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рди рдЕрдиреБрдорддрд┐ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред
рдбрд╛рд░реНрдЯ рддреНрд░реБрдЯрд┐: рд╣реИрдВрдбрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж:
PlatformException (PERMISSION_DENIED, рд╕реНрдерд╛рди рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЕрд╕реНрд╡реАрдХреГрдд, рд╢реВрдиреНрдп)
рдЙрдореНрдореАрдж рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдореБрдЭреЗ рд╢реВрдиреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд╕рдХреЗрдВред
pubspec.yaml рдореЗрдВ рдкрдм рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдХрд┐рд╕реА рднреА рдмрдЯрди рдЯреИрдк рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВ
рдкреНрд░рдпрддреНрди {
рд╕реНрдерд┐рддрд┐ рд╕реНрдерд┐рддрд┐ = рдкреНрд░рддреАрдХреНрд╖рд╛рд░рдд рдЬрд┐рдпреЛрд▓реЛрдХреЗрдЯрд░ ()
.getCurrentPosition (рд╡рд╛рдВрдЫрд┐рдд рд╕рдЯреАрдХрддрд╛: рд╕реНрдерд╛рди рд╕рдЯреАрдХрддрд╛ред рдЙрдЪреНрдЪ);
} рдХреИрдЪ (рдИ) {
рдкреНрд░рд┐рдВрдЯ (рдИ);
}
рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред
рд╕рдВрд╕реНрдХрд░рдг: 1.0.1
[тЬУ] рд╕реНрдкрдВрджрди (рдЪреИрдирд▓ рдорд╛рд╕реНрдЯрд░, vрез.реж.рез-рдкреНрд░реА.реи, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ резреж.резрек резреордПрейреорекрдП рдкрд░, рд▓реЛрдХреЗрд▓ рдПрди-рдЬреАрдмреА)
[тЬУ] рдПрдВрдбреНрд░реЙрдЗрдб рдЯреВрд▓рдЪреЗрди - рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд (рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ реирео.реж.рей)
[тЬУ] рдЖрдИрдУрдПрд╕ рдЯреВрд▓рдЪреЗрди - рдЖрдИрдУрдПрд╕ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд (рдПрдХреНрд╕рдХреЛрдб резреж.рез)
[тЬУ] рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ (рд╕рдВрд╕реНрдХрд░рдг рей.реи)
[тЬУ] рд╡реА.рдПрд╕. рдХреЛрдб (рд╕рдВрд╕реНрдХрд░рдг рез.реиреп.рез)
[тЬУ] рдХрдиреЗрдХреНрдЯреЗрдб рдбрд┐рд╡рд╛рдЗрд╕ (рез рдЙрдкрд▓рдмреНрдз)
тАв рдХреЛрдИ рдЧрдбрд╝рдмрдбрд╝реА рдирд╣реАрдВ рдорд┐рд▓реА!
рдордВрдЪ:
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ?
рдЗрд╕рдХрд╛ рдХреЛрдИ рдЙрдкрд╛рдп?
@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" рдирд╛рдо рдХрд╛ рдПрдХ рдкреИрдХреЗрдЬ рдорд┐рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдорд╛рдВрдЧрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдпрд╛рдд ' рдкреИрдХреЗрдЬ: location_permissions/location_permissions.dart ';
рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ рдЬрд╣рд╛рдБ рдЖрдк рдЕрдиреБрдорддрд┐ рдорд╛рдБрдЧрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред (рдЗрд╕реЗ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдкрд╣рд▓реЗ рдкреЗрдЬ рдкрд░ рдЬреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред)
<strong i="16">@override</strong>
void initState() {
....
if (Platform.isIOS) {
location_permission();
}
....
}
рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ
рд╢реВрдиреНрдп рд╕реНрдерд╛рди_рдкрд░рдорд┐рд╢рди () async {
рдЕрдВрддрд┐рдо рдЕрдиреБрдорддрд┐ рд╕реНрдерд┐рддрд┐ рдЕрдиреБрдорддрд┐ = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ _getLocationPermission ();
рдЕрдЧрд░ (рдЕрдиреБрдорддрд┐ == PermissionStatus.grand) {
рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ = рдЬрд┐рдпреЛрд▓реЛрдХреЗрдЯрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред getCurrentPosition (
рд╡рд╛рдВрдЫрд┐рдд рд╕рдЯреАрдХрддрд╛: рд╕реНрдерд╛рди рд╕рдЯреАрдХрддрд╛ред рд╕рд░реНрд╡реЛрддреНрддрдо);
// Use the position to do whatever...
}
}
рднрд╡рд┐рд╖реНрдп
рдЕрдВрддрд┐рдо рдЕрдиреБрдорддрд┐ рд╕реНрдерд┐рддрд┐ рдЕрдиреБрдорддрд┐ = рд╕реНрдерд╛рди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ()
.checkPermissionStatus (рд╕реНрддрд░: LocationPermissionLevel.location);
if (permission != PermissionStatus.granted) {
final PermissionStatus permissionStatus = await LocationPermissions()
.requestPermissions(
permissionLevel: LocationPermissionLevel.location);
return permissionStatus;
} else {
return permission;
}
}
рдмрд╕ рдЕрдм рдЖрдкрдХреЛ iOS рдРрдк рдореЗрдВ рдПрдХ рдкреЙрдкрдЕрдк рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд▓реЛрдХреЗрд╢рди рдХреА рдкрд░рдорд┐рд╢рди рдорд╛рдВрдЧреЗрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@YogeshLegendkiller, @kaumudpa, рд╕рдорд╛рдзрд╛рди @jaumard рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣рд▓ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рддрд░реАрдХрд╛ рд╣реИред
рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐
checkGeolocationPermissionStatus
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐getCurrentPosition
,getLastKnownPosition
рдпрд╛getPositionStream
рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд┐рддрд┐PermissionStatus.granted
рд╕реЗрдЯ рд╣реИредgetPositionStream
рддрд░реАрдХреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: