presentModal static method

Future<bool> presentModal(
  1. CPTemplate template,
  2. FCPChannelTypes method,
  3. Map<String, dynamic> arguments
)

Implementation

static Future<bool> presentModal(
  CPTemplate template,
  FCPChannelTypes method,
  Map<String, dynamic> arguments,
) async {
  if (_modalRequest != null || currentPresentTemplate != null) return false;
  final request = _ModalRequest(template);
  _modalRequest = request;
  try {
    final completed = await Future.any<bool?>([
      flutterToNativeModule(method, arguments, () {
        if (!identical(_modalRequest, request)) return false;
        request.invoked = true;
        return true;
      }),
      request.cancelled.future,
    ]);
    if (!identical(_modalRequest, request)) return false;
    if (completed != true) {
      _modalRequest = null;
      return false;
    }
    currentPresentTemplate = template;
    return true;
  } catch (_) {
    if (identical(_modalRequest, request)) _modalRequest = null;
    rethrow;
  }
}