我有兩個幾乎相同的功能:
void _launchGoogleMapsURL() async {
var GoogleMapsLongLat = widget.place!.location!.LongLatforGoogleMaps()!;
var url ="https://maps.google.com?q=${GoogleMapsLongLat}"; // DOES NOT WORK
if (await canLaunch(url)) {
await launch(url);
}
}
和:
void _actionViewMoreArticles() async {
var url = "https://mywebsitename.com/plainurl"; // WORKS!
if (await canLaunch(url)) {
await launch(url);
}
}
和按鈕:
CupertinoButton(
padding: EdgeInsets.all(0),
child: Row(
children: <Widget>[
Padding(
padding: EdgeInsets.only(right: 0, left: 20),
child: Text(
Localized.of(context)!.trans(LocalizedKey.navigate) ?? "",
style: TextStyle(
fontFamily: TraloFont,
fontSize: 16,
color: Colors.white),
),
),
],
),
onPressed: _launchGoogleMapsURL,
),
因此,如果我嘗試使用 long/lat 打開 Google 地圖,它不起作用(在我的真實設備上測驗時,Xcode 不會給我任何錯誤),但是當我使用示例中所示的“純 URL”時,它確實有效。
最后,函式如下所示:
extension longLatforGoogle on String {
LongLatforGoogleMaps (){
var latAndLng = this.split(",").map((text) => double.tryParse(text));
if (latAndLng.length == 2) {
return latAndLng;
}
return null;
}
}
我究竟做錯了什么?
編輯:
這就是控制臺所說的:
component name for https://maps.google.com?q=(52.366722, 4.889386) is null
我在使用“普通 URL”時遇到了同樣的錯誤,但是那個實際上打開了頁面并且它可以作業。
如果我列印 GoogleMapsLongLat,我會得到:
(52.366722, 4.889386)
如果我只在 Xcode 中使用 await launch(url),它會給我以下錯誤:
terminating app due to uncaught exception 'nsinvalidargumentexception'
并作為原因: the specified URL has an unsupported scheme. Only HTTP and HTTP urls are supported.
但這很奇怪,因為如您所見,我使用的是 HTTPS。
uj5u.com熱心網友回復:
自己修好了。謝謝你的推動。
我這樣做了:
var NoWhiteSpaceURL = Googleurl.replaceAll(' ', '');
if (await canLaunch(NoWhiteSpaceURL)) {
await launch(NoWhiteSpaceURL);
}
當 URL 中有空格時(顯然)會出現問題。這就是它給出這些錯誤的原因。洗掉它們為我解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/421273.html
標籤:
