send method

dynamic send()

Implementation

send() async {
  final RequestApiHelperConfigData config = RequestApiHelperConfig.load(
    config: changeConfig,
  );

  Map<String, String> _header;
  if (((config.withLoading!.widget != null && config.withLoading!.toogle != false) || config.withLoading!.toogle == true) || config.withLoading!.toogle == true) {
    if (context != null) {
      isLoading = true;
      BackDark(view: config.withLoading).dialog(context);
    }
  }
  bool ifResponseError = false;
  try {
    if (config.beforeSend != null) {
      await config.beforeSend!;
    }
    String? token = await Session.load('token');

    // input header
    if (token != null && token != '') {
      _header = {
        'Accept': 'application/json',
        'Authorization': token,
      };
    } else {
      _header = {
        'Accept': 'application/json',
      };
    }
    try {
      ifResponseError = await process(config: config, data: customData == null ? ((data == null) ? RequestData() : data) : null, header: _header, customData: customData, name: name, type: type, onUploadProgress: onUploadProgress);
    } catch (__) {
      ifResponseError = true;
    }
    if (context != null) {
      currentContext = context;
    }
  } on SocketException catch (se) {
    if (((config.withLoading!.widget != null && config.withLoading!.toogle != false) || config.withLoading!.toogle == true) && ifResponseError == false) {
      if (context != null) {
        isLoading = false;
        Navigator.pop(context!);
      }
    }
    if (config.socketMessage != null) {
      Fluttertoast.showToast(msg: config.socketMessage!);
    }
    if (context != null) {
      currentContext = context;
    }
    if (config.onSocket != null) {
      return config.onSocket!(se);
    }
    if (config.socketMessage != null) {
      if (context != null) {
        if (currentContext != context || singleContext == true) {
          if (config.socketRedirect != null) {
            if (config.socketRedirect!.widget != null) {
              Navigator.push(
                context!,
                MaterialPageRoute(
                  builder: (context) => config.socketRedirect!.widget!,
                ),
              );
            } else if (config.socketRedirect!.toogle == true) {
              Navigator.push(
                context!,
                MaterialPageRoute(
                  builder: (context) => const Timeout(
                    buttonColor: Colors.blue,
                  ),
                ),
              );
            }
          }
        }
      }
    }
  } on TimeoutException catch (te) {
    if (((config.withLoading!.widget != null && config.withLoading!.toogle != false) || config.withLoading!.toogle == true) && ifResponseError == false) {
      if (context != null) {
        isLoading = false;
        Navigator.pop(context!);
      }
    }
    if (config.timeoutMessage != null) {
      Fluttertoast.showToast(msg: config.timeoutMessage!);
    }
    if (context != null) {
      currentContext = context;
    }
    if (config.onTimeout != null) {
      return config.onTimeout!(te);
    }
    if (config.timeoutMessage != null) {
      if (context != null) {
        if (currentContext != context || singleContext == true) {
          if (config.timeoutRedirect != null) {
            if (config.timeoutRedirect!.widget != null) {
              Navigator.push(
                context!,
                MaterialPageRoute(
                  builder: (context) => config.timeoutRedirect!.widget!,
                ),
              );
            } else if (config.timeoutRedirect!.toogle == true) {
              Navigator.push(
                context!,
                MaterialPageRoute(
                  builder: (context) => const Timeout(
                    buttonColor: Colors.blue,
                  ),
                ),
              );
            }
          }
        }
      }
    }
  } catch (e) {
    if (((config.withLoading!.widget != null && config.withLoading!.toogle != false) || config.withLoading!.toogle == true) && ifResponseError == false) {
      if (config.withLoading!.widget != null || config.withLoading!.toogle == true) {
        if (context != null) {
          isLoading = false;
          Navigator.pop(context!);
        }
      }
    }
    if (context != null) {
      currentContext = context;
    }
    if (config.onException != null) {
      await config.onException!(e);
    } else {
      print(e.toString());
    }
  }
}