Flutter 颤振没有启动作为API响应接收的动态URL

Flutter 颤振没有启动作为API响应接收的动态URL,flutter,flutter-method-channel,url-launcher,Flutter,Flutter Method Channel,Url Launcher,我一直在尝试在Flitter应用程序中启动一个URL。我正在使用url_启动器,但无法启动url。我收到的URL是来自API的响应 如果我复制响应并以静态方式发送它,它是工作的,但是当作为动态变量传递时,它总是显示“无法启动” 代码: 颤振版本:2.2 url_启动器:^6.0.4 错误: [VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: Could not launch [TextElement: ' ', LinkElement:

我一直在尝试在Flitter应用程序中启动一个URL。我正在使用url_启动器,但无法启动url。我收到的URL是来自API的响应

如果我复制响应并以静态方式发送它,它是工作的,但是当作为动态变量传递时,它总是显示“无法启动”

代码:

颤振版本:2.2

url_启动器:^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='
给出:

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>
https://www.bsestarmf.in/ClientOrderPayment.aspx?K4HhW6zSxVp2T2sl9n5acA+J8qCjHcdVy2hyQmgbsuje2e6rf0+SUJJIBFQV1ZICFER4VQUQJTRXGRILYXWFKKOBJ9DDDPA5DQRLOILEPKXGWPB0QQQA36DMIHYQCA/fP60nFus9nGlM=
[VERBOSE-2:ui\u dart\u state.cc(199)]未处理的异常:无法启动Body.url
#0签出CartItem(包:optMoney/Cart/Components/Body.dart:58:5)
#1_BodyState.构建。。(包装:optymoney/Cart/Components/Body.省道:326:29)
这是一个支付链接,应该可以在Flatter应用程序中打开浏览器。但它现在起作用了

请帮忙

注意:因为这是一个支付链接,它已经被编辑过了,所以如果你尝试从浏览器启动它,它将不起作用

final payUrl = Uri.encodeFull(response.body);
  if (await canLaunch(payUrl)) {
    await launch(payUrl, forceWebView: true, enableJavaScript: true);
  } else {
    throw 'Could not launch $payUrl';
  }

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

能否在正文中显示json响应?我已更新了原始问题,请检查。它表明您的url为空或无效?我测试了你的网址,效果很好。你调试代码了吗?你的身体等级是什么?是否执行了
Body.url=response.Body.toString()代码工作?打印的结果是什么(Body.url)。您有两种打印方法。哪一个打印
https://www.bsestarmf.in/C...
body.url是因为我定义了一个全局变量。该应用程序运行良好。我定义了其他API。两个print语句都在打印相同的内容。如您所见,我已将Body.url指定为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>
final payUrl = Uri.encodeFull(response.body);
  if (await canLaunch(payUrl)) {
    await launch(payUrl, forceWebView: true, enableJavaScript: true);
  } else {
    throw 'Could not launch $payUrl';
  }