Flutter-条纹:类型“List< dynamic>”不是类型“Map&lt;String,dynamic&gt;?'method_channel_stripe.dart中的错误:263

bksxznpy  于 2023-08-07  发布在  Flutter
关注(0)|答案(4)|浏览(118)

这是我在这里的第一篇文章。我正在为Flutter项目中的Stripe集成而挣扎,在网络上找不到任何其他类似的问题或问题。我用的是Flutter Bloc and Stripe。
一旦我运行函数await Stripe.instance.presentPaymentSheet();并试图用信用卡42424 42424 42424 42424 42424假付款。我有上面的错误:

[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>?'
#0      MethodChannelStripe.presentPaymentSheet
method_channel_stripe.dart:263
<asynchronous suspension>
#1      Stripe.presentPaymentSheet
stripe.dart:517
<asynchronous suspension>

字符串
我在后端创建支付意图,一切似乎都很好,这一部分在我的条纹 Jmeter 板
下面是我代码的一个简短复制:
pubspec.yaml

bloc: ^8.0.0
  flutter_bloc: ^8.0.0
  flutter_stripe: ^9.3.0


条纹阻挡省道

class StripeBloc extends Bloc<StripeEvent, StripeState> {
  StripeBloc() : super(const StripeState()) {
    on<RequestedStripePaymentEvent>(_onRequestedStripePaymentEvent);
  }

  void _onRequestedStripePaymentEvent(RequestedStripePaymentEvent event,
      Emitter<StripeState> emit) async {
    try {
      final Map<String, dynamic>? paymentIntent = await createPaymentIntent();
      await Stripe.instance.initPaymentSheet(
          paymentSheetParameters: SetupPaymentSheetParameters(

        paymentIntentClientSecret: paymentIntent?['client_secret'],
      ));
      await Stripe.instance.presentPaymentSheet();
    } on StripeException catch (e) {
      if (e.error.code == FailureCode.Canceled) {}
      if (e.error.code == FailureCode.Failed ||
          e.error.code == FailureCode.Timeout) {
      }
    } finally {
    }
  }
}


stripe_API.dart

Future<Map<String, dynamic>?> createPaymentIntent() async {
  try {
    var response =
        await postAPIAuthenticated('path');
    return jsonDecode(response.body);
  } catch (err) {
    throw Exception(err);
  }
}


希望大家能帮助我:)谢谢
我已经试着让我的代码尽可能少。我也尝试在前端直接调用API,但仍然得到相同的错误,所以我认为后端不会参与其中

zaqlnxep

zaqlnxep1#

错误似乎与版本有关。
刚刚在Github上提出了一个问题:https://github.com/flutter-stripe/flutter_stripe/issues/1344

jdgnovmf

jdgnovmf2#

在过去的两天里,flutter_stripe包的GitHub仓库上已经多次报告了这个问题:
https://github.com/flutter-stripe/flutter_stripe/issues/1344
这似乎是因为9.3.0版本的问题。降级到9.2.2解决了这个问题。对于其余的,我们可能不得不等待Stripe内部解决它。
希望对你有帮助!

pbwdgjma

pbwdgjma3#

错误意味着您的响应实际上是一个列表而不是一个Map。换句话说,响应类似于[ ... ]而不是{ ... }。也许预期的map实际上是列表中的第一个元素。如果是这样的话,这也许可以解决它:

Future<Map<String, dynamic>?> createPaymentIntent() async {
  try {
    var response =
        await postAPIAuthenticated('path');
    return jsonDecode(response.body)[0]; //notice I added [0] here
  } catch (err) {
    throw Exception(err);
  }
}

字符串
如果这不能解决它,我建议你打印response,看看你得到的实际响应,然后从那里开始

nue99wik

nue99wik4#

将这一行添加到pubspec.yaml:

stripe_ios: ^9.3.1

字符串

相关问题