当使用变量时,为什么我不能导航到Flutter中的URL



我有两个几乎相同的函数:

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打开谷歌地图,它是不起作用的(在我的真实设备上测试时,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中使用等待启动(url(,它会给我以下错误:

terminating app due to uncaught exception 'nsinvalidargumentexception' 

原因:the specified URL has an unsupported scheme. Only HTTP and HTTP urls are supported.

但这很奇怪,因为正如你所看到的,我正在使用HTTPS。

我自己修复了它。谢谢你的轻推。

我做到了:

var NoWhiteSpaceURL = Googleurl.replaceAll(' ', '');
if (await canLaunch(NoWhiteSpaceURL)) {
await launch(NoWhiteSpaceURL);
}

当URL中有空白时,问题就会出现(显然(。这就是它给出这些错误的原因。删除它们为我解决了问题。

相关内容

  • 没有找到相关文章

最新更新