如何解决Flutter 未启动作为 API 响应接收的动态 URL
我一直在尝试在 Flutter 应用程序中启动 URL。我正在使用 url_launcher,但无法启动 URL。我收到的 URL 是来自 API 的响应。
如果我复制响应并静态发送它,它可以工作,但是当作为动态变量传递时,它总是显示“无法启动。”
代码:
checkoutCartItem() async {
var url = Uri.parse(
'');
final headers = {'Content-Type': 'application/json'};
var body = jsonEncode({
"status": 2,"uid": SignForm.userIdGlobal,});
final encoding = Encoding.getByName('utf-8');
Response response = await post(
url,headers: headers,body: body,encoding: encoding,);
print(response.body);
Body.url = response.body.toString();
print(Body.url);
if (await canLaunch(Body.url.toString())) {
await launch(Body.url.toString());
} else {
throw 'Could not launch $Body.url';
}
}
颤振版本:2.2,
url_launcher: ^6.0.4
错误:
[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: Could not launch [TextElement: '
',LinkElement: 'https://www.bsestarmf.in/ClientOrderPayment.aspx?K4HhW6zSxVp2T2sl9n5acA+J8qCjHcdVy2hyQmgbsuje2e6rf0+sujJisssdsaBFQV1zicfCer4VQUqJtRxgRiLYXwfXKkOBj9pA5dqrlOiLEPkxgWpB0QQa36DMiHhyqCA/fP60nFus9nGlM='
print(response.body)
给出:
https://www.bsestarmf.in/ClientOrderPayment.aspx?K4HhW6zSxVp2T2sl9n5acA+J8qCjHcdVy2hyQmgbsuje2e6rf0+sujjibFQV1zicfCer4VQUqJtRxgRiLYXwfXKkOBj9dddddpA5dqrlOiLEPkxgWpB0QQa36DMiHhyqCA/fP60nFus9nGlM=
[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: Could not launch Body.url
#0 checkoutCartItem (package:optymoney/Cart/Components/Body.dart:58:5)
<asynchronous suspension>
#1 _BodyState.build.<anonymous closure>.<anonymous closure> (package:optymoney/Cart/Components/Body.dart:326:29)
<asynchronous suspension>
这是一个支付链接,应该在 Flutter 应用程序中打开浏览器。但它现在可以工作了。
请帮忙!!!
注意:由于这是一个付款链接,它已被编辑,因此如果您尝试从浏览器启动它,它将无法工作
解决方法
final payUrl = Uri.encodeFull(response.body);
if (await canLaunch(payUrl)) {
await launch(payUrl,forceWebView: true,enableJavaScript: true);
} else {
throw 'Could not launch $payUrl';
}
我就是这样解决问题的。事实证明,对接收到的响应进行编码是所需的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。