我一直在尝试使用Dart的地理定位方法,但没有成功,但是我有以下JS代码可以正常工作。
var onSuccess = function(position) {
alert('Works');
};
function onError(error) {
alert('error');
}
function test() {
alert('js called');
navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 10000, enableHighAccuracy: true});
}
从javascript中调用
test()
可以正常工作,并且会出现Works警报。但是,当我使用以下代码从Dart调用test()
时,除“Js Called”外,均未发出任何警报。context.callMethod("test",[]);
我不确定我在做什么错,任何指针都很好。
最佳答案
这段代码在Dartium和Chrome中对我来说效果很好:
import 'dart:html' as dom;
...
dom.window.navigator.geolocation.getCurrentPosition()
.then(onSuccess)
..catchError((dom.PositionError error) {
dom.window.alert("Error code: ${error.code}, Error message: ${error.message}");
})
..whenComplete(() => dom.window.alert("complete"));
要么
test() async {
try {
dom.Geoposition pos = await dom.window.navigator.geolocation.getCurrentPosition();
dom.window.alert(pos.toString());
dom.window.alert("complete");
} on dom.PositionError catch(error) {
dom.window.alert("Error code: ${error.code}, Error message: ${error.message}");
}
}
我没有测试两种变体中的错误处理代码。
关于cordova - Dart的PhoneGap GeoLocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33935555/