Flutter-geolocator: ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜๋Š” ๋™์•ˆ MissingPluginException์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 04์›” 01์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Baseflow/flutter-geolocator

๐Ÿ› ๋ฒ„๊ทธ ์‹ ๊ณ 


getCurrentPosition ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋™์•ˆ MissingPluginException์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด ํ•จ์ˆ˜ placemarkFromCoordinates์—์„œ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

[ ์˜ค๋ฅ˜:flutter/lib/ui/ui_dart_state.cc (157)] ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ: MissingPluginException(com.baseflow.flutter/location_permissions ์ฑ„๋„์—์„œ checkPermissionStatus ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ)
E/flutter(32250): #0 MethodChannel.invokeMethod(ํŒจํ‚ค์ง€:flutter/src/services/platform_channel.dart:319:7)
E/ํ”Œ๋Ÿฌํ„ฐ(32250):
E/flutter(32250): #1 LocationPermissions.checkPermissionStatus(ํŒจํ‚ค์ง€:location_permissions/src/location_permissions.dart:38:30)
E/flutter (32250): #2 Geolocator._getLocationPermission (ํŒจํ‚ค์ง€:geolocator/geolocator.dart:201:10)
E/flutter (32250): #3 Geolocator.getCurrentPosition (ํŒจํ‚ค์ง€:geolocator/geolocator.dart:101:47)
E/flutter(32250): #4 _SearchPageState.callback(ํŒจํ‚ค์ง€:gramstands/pages/search_page.dart:181:18)
E/flutter (32250): #5 callbackDispatcher.(ํŒจํ‚ค์ง€:geofence/callback_dispatcher.dart:25:13)
E/flutter (32250): #6 MethodChannel._handleAsMethodCall (ํŒจํ‚ค์ง€:flutter/src/services/platform_channel.dart:402:55)
E/flutter (32250): #7 MethodChannel.setMethodCallHandler.(ํŒจํ‚ค์ง€:flutter/src/services/platform_channel.dart:370:54)
E/flutter(32250): #8 _DefaultBinaryMessenger.handlePlatformMessage(ํŒจํ‚ค์ง€:flutter/src/services/binding.dart:200:33)
E/ํ”Œ๋Ÿฌํ„ฐ(32250): #9 _invoke3.(dart:ui/hooks.dart:303:15)
E/flutter(32250): #10 _rootRun(dart:async/zone.dart:1126:13)
์ „์ž/ํ”Œ๋Ÿฌํ„ฐ(32250): #11 _CustomZone.run(dart:async/zone.dart:1023:19)
์ „์ž/ํ”Œ๋Ÿฌํ„ฐ(32250): #12 _CustomZone.runGuarded(dart:async/zone.dart:925:7)
E/flutter (32250): #13 _invoke3 (dart:ui/hooks.dart:302:10)
E/flutter (32250): #14 _dispatchPlatformMessage (dart:ui/hooks.dart:162:5)

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์ž๋™์œผ๋กœ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋ฒˆ์‹ ๋‹จ๊ณ„

๋ชจ๋“  ์ •์  ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ์—์„œ ํ•จ์ˆ˜ ์•„๋ž˜์—์„œ ๋ฐฉ๊ธˆ ํ˜ธ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ •์  ๋ฌดํšจ ์ฝœ๋ฐฑ(์œ„์น˜ ์œ„์น˜, GeofenceEvent geoEvent) ๋น„๋™๊ธฐ {
Geolocator().getCurrentPosition().then((์œ„์น˜) {
print("์ฝœ๋ฐฑ์˜ ํ˜„์žฌ ์œ„์น˜ => ${position.toJson()}");
});
}

๊ตฌ์„ฑ

์˜์‚ฌ ์š”์•ฝ(๋ชจ๋“  ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด flutter Doctor -v ์‹คํ–‰):
[โˆš] Flutter(์ฑ„๋„ ์•ˆ์ • ๋ฒ„์ „, v1.12.13+hotfix.8, Microsoft Windows [๋ฒ„์ „ 10.0.18362.720], ๋กœ์ผ€์ผ en-IN)

[โˆš] Android ํˆด์ฒด์ธ - Android ๊ธฐ๊ธฐ์šฉ ๊ฐœ๋ฐœ(Android SDK ๋ฒ„์ „ 29.0.0)
[โˆš] ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค(๋ฒ„์ „ 3.6)
[โˆš] VS ์ฝ”๋“œ(๋ฒ„์ „ 1.43.2)
[โˆš] ์—ฐ๊ฒฐ๋œ ์žฅ์น˜(1๊ฐœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

โ€ข ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค!

**๋ฒ„์ „: 5.3.0

ํ”Œ๋žซํผ:

  • [์•„์ง ํ™•์ธ๋˜์ง€ ์•Š์Œ] :iphone: iOS
  • [X] :๋กœ๋ด‡: ์•ˆ๋“œ๋กœ์ด๋“œ

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด ๋ฌธ์ œ๋Š” ํ”Œ๋Ÿฌํ„ฐ์˜ ์ •์  ๋ฉ”์„œ๋“œ์—์„œ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ •์  ๋ฉ”์„œ๋“œ ์™ธ๋ถ€์—์„œ๋Š” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

https://stackoverflow.com/a/51244003/7669884

๐Ÿ› ๋ฒ„๊ทธ ์‹ ๊ณ 

getCurrentPosition ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋™์•ˆ MissingPluginException์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด ํ•จ์ˆ˜ placemarkFromCoordinates์—์„œ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

[์˜ค๋ฅ˜:flutter/lib/ui/ui_dart_state.cc(157)] ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ: MissingPluginException(com.baseflow.flutter/location_permissions ์ฑ„๋„์—์„œ checkPermissionStatus ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ)
E/flutter(32250): #0 MethodChannel.invokeMethod(ํŒจํ‚ค์ง€:flutter/src/services/platform_channel.dart:319:7)
E/ํ”Œ๋Ÿฌํ„ฐ(32250):
E/flutter(32250): #1 LocationPermissions.checkPermissionStatus(ํŒจํ‚ค์ง€:location_permissions/src/location_permissions.dart:38:30)
E/flutter (32250): #2 Geolocator._getLocationPermission (ํŒจํ‚ค์ง€:geolocator/geolocator.dart:201:10)
E/flutter (32250): #3 Geolocator.getCurrentPosition (ํŒจํ‚ค์ง€:geolocator/geolocator.dart:101:47)
E/flutter(32250): #4 _SearchPageState.callback(ํŒจํ‚ค์ง€:gramstands/pages/search_page.dart:181:18)
E/flutter (32250): #5 callbackDispatcher. (ํŒจํ‚ค์ง€:geofence/callback_dispatcher.dart:25:13)
E/flutter (32250): #6 MethodChannel._handleAsMethodCall (ํŒจํ‚ค์ง€:flutter/src/services/platform_channel.dart:402:55)
E/flutter (32250): #7 MethodChannel.setMethodCallHandler. (ํŒจํ‚ค์ง€:flutter/src/services/platform_channel.dart:370:54)
E/flutter(32250): #8 _DefaultBinaryMessenger.handlePlatformMessage(ํŒจํ‚ค์ง€:flutter/src/services/binding.dart:200:33)
E/ํ”Œ๋Ÿฌํ„ฐ(32250): #9 _invoke3. (dart:ui/hooks.dart:303:15)
E/flutter(32250): #10 _rootRun(dart:async/zone.dart:1126:13)
์ „์ž/ํ”Œ๋Ÿฌํ„ฐ(32250): #11 _CustomZone.run(dart:async/zone.dart:1023:19)
์ „์ž/ํ”Œ๋Ÿฌํ„ฐ(32250): #12 _CustomZone.runGuarded(dart:async/zone.dart:925:7)
E/flutter (32250): #13 _invoke3 (dart:ui/hooks.dart:302:10)
E/flutter (32250): #14 _dispatchPlatformMessage (dart:ui/hooks.dart:162:5)

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์ž๋™์œผ๋กœ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋ฒˆ์‹ ๋‹จ๊ณ„

๋ชจ๋“  ์ •์  ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ์—์„œ ํ•จ์ˆ˜ ์•„๋ž˜์—์„œ ๋ฐฉ๊ธˆ ํ˜ธ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ •์  ๋ฌดํšจ ์ฝœ๋ฐฑ(์œ„์น˜ ์œ„์น˜, GeofenceEvent geoEvent) ๋น„๋™๊ธฐ {
Geolocator().getCurrentPosition().then((์œ„์น˜) {
print("์ฝœ๋ฐฑ์˜ ํ˜„์žฌ ์œ„์น˜ => ${position.toJson()}");
});
}

๊ตฌ์„ฑ

์˜์‚ฌ ์š”์•ฝ(๋ชจ๋“  ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด flutter Doctor -v ์‹คํ–‰):
[โˆš] Flutter(์ฑ„๋„ ์•ˆ์ • ๋ฒ„์ „, v1.12.13+hotfix.8, Microsoft Windows [๋ฒ„์ „ 10.0.18362.720], ๋กœ์ผ€์ผ en-IN)

[โˆš] Android ํˆด์ฒด์ธ - Android ๊ธฐ๊ธฐ์šฉ ๊ฐœ๋ฐœ(Android SDK ๋ฒ„์ „ 29.0.0)
[โˆš] ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค(๋ฒ„์ „ 3.6)
[โˆš] VS ์ฝ”๋“œ(๋ฒ„์ „ 1.43.2)
[โˆš] ์—ฐ๊ฒฐ๋œ ์žฅ์น˜(1๊ฐœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

โ€ข ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค!

**๋ฒ„์ „: 5.3.0

ํ”Œ๋žซํผ:

  • [์•„์ง ํ™•์ธ๋˜์ง€ ์•Š์Œ] ๐Ÿ“ฑ iOS
  • [x] ๐Ÿค– ์•ˆ๋“œ๋กœ์ด๋“œ

๋ช…๋ น ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค..flutter run

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰