renderPaymentMethods method

Future<PaymentMethodWidgetControl> renderPaymentMethods({
  1. required String selector,
  2. required Amount amount,
  3. RenderPaymentMethodsOptions? options,
})

결제수단 위젯을 렌더링하는 메서드입니다. selector : 렌더링할 위젯의 식별자입니다. UI 트리에 추가한 PaymentMethodWidget의 생성자에 넣은 값을 입력합니다. amount : 결제 금액 정보입니다. (금액, 통화, 국가) options : 결제수단 위젯의 렌더링 옵션입니다. UI 트리에 selector을 갖는 PaymentMethodWidget이 없는 경우 Exception을 발생시킵니다. 정상적으로 렌더링되면 PaymentMethodWidgetControl의 Future를 반환합니다.

Implementation

Future<PaymentMethodWidgetControl> renderPaymentMethods({
  required String selector,
  required Amount amount,
  RenderPaymentMethodsOptions? options,
}) {
  final completer = Completer<PaymentMethodWidgetControl>();
  WidgetsBinding.instance.addPostFrameCallback((_) async {
    final paymentMethodKey = _widgetKeyMap[selector];
    if (paymentMethodKey is! GlobalKey<PaymentMethodWidgetState>) {
      throw Exception('PaymentMethodWidget with selector \'$selector\' does not exist.');
    }
    (paymentMethodKey.currentState?.renderPaymentMethods(
              amount: amount,
              options: options,
            ) ??
            (throw Exception('PaymentMethod is not rendered. Call \'renderPaymentMethods\' method first.')))
        .then((value) {
      completer.complete(value);
    }, onError: (e) {
      completer.completeError(e);
    });
  });
  return completer.future;
}