requestCode method

Future<String?> requestCode()

Implementation

Future<String?> requestCode() async {
  var code;
  final String urlParams = _constructUrlParams();

  if (_config.context != null) {
    String initialURL =
        ("${_authorizationRequest.url}?$urlParams").replaceAll(" ", "%20");
    var web = WebView(
      initialUrl: initialURL,
      javascriptMode: JavascriptMode.unrestricted,
      onPageFinished: (url) {
        Uri uri = Uri.parse(url);

        if (uri.queryParameters["error"] != null) {
          Navigator.of(_config.context!).pop();
          throw new Exception("Access denied or authentation canceled.");
        }

        if (uri.queryParameters["code"] != null) {
          Navigator.of(_config.context!).pop();
          _onCodeListener.add(uri.queryParameters["code"]);
        }
      },
    );

    await Navigator.of(_config.context!).push(MaterialPageRoute(
        builder: (context) => Scaffold(
              body: SafeArea(child: web),
            )));
  } else {
    throw Exception("Context is null. Please call setContext(context).");
  }

  code = await _onCode.first;
  return code;
}