request method

Future request(
  1. dynamic map,
  2. Future<Map?> run(
    1. Map reqData
    )
)

common request method

Implementation

Future<dynamic> request(
  dynamic map,
  // do your business logic in this call back
  Future<Map?> Function(Map reqData) run,
) async {
  if (map == null) {
    return;
  }
  var req;
  bool isDart;
  if (map is Map) {
    isDart = true;
    req = map;
  } else {
    isDart = false;
    req = jsonDecode(map);
  }
  final pageName = req['pageName'];
  var request = req['request'];
  if (isDart) {
    request = req;
  }

  final callId = request['callId'];

  final completeCallback = request['callback'];

  final response = await run(request);

  // 需要判断发起方的请求是dart端还是js端
  if (isDart) {
    completeCallback?.call(response);
    return Future.value();
  } else {
    final resp = {
      'callId': callId,
      'pageName': pageName,
      'response': response,
    };
    return Future.value(jsonEncode(resp));
  }
}