request method

Future<void> request(
  1. Map<String, String> headers,
  2. Map<String, dynamic> data
)

Implementation

Future<void> request(
  Map<String, String> headers,
  Map<String, dynamic> data,
) async {
  try {
    final value = await dio.post(
      '',
      options: Options(headers: headers),
      data: jsonEncode(data),
    );
    if (value.statusCode == 200 || value.statusCode == 201) {
      final result = value.data;
      final data = result['data'] as Map<String, dynamic>;
      setState(() {
        _webViewController.loadRequest(Uri.parse(data['paymentLinkUrl']));
        _paymentLink = data['paymentLinkUrl'];
        apiLoading = false;
      });
      return;
    } else {
      setState(() {
        apiLoading = false;
      });
      widget.onInitFailed('Failed to initialize');
    }
  } on DioException catch (e) {
    setState(() {
      apiLoading = false;
    });
    final r = e.response?.data;
    try {
      final error = r as Map<String, dynamic>?;
      final errorString = error?['message'] ?? 'Failed to initialize';
      widget.onInitFailed(errorString);
    } catch (e) {
      widget.onInitFailed(
        r.runtimeType == String ? r : 'Failed to initialize',
      );
    }
  } catch (e) {
    setState(() {
      apiLoading = false;
    });
    widget.onInitFailed('Failed to initialize');
  }
}