繁体   English   中英

Flutter 未启动作为响应从 API 接收的动态 URL

[英]Flutter is not launching dynamic URLs that are being received as response from API

我一直在尝试在 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';
  }
}

Flutter版本: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';
  }

这就是我解决问题的方式。 事实证明,对收到的响应进行编码是所需的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM