signInWithWebView method

  1. @override
Future signInWithWebView(
  1. BuildContext context
)
override

Implementation

@override
Future<dynamic> signInWithWebView(BuildContext context) async {
  bool isFinish = false;

  return await Navigator.of(context).push(
    MaterialPageRoute(
      builder: (context) => SocialSignInPageMobile(
        url: authUrl(),
        redirectUrl: redirectUrl,
        userAgent: pageInfo.userAgent,
        clearCache: pageInfo.clearCache,
        title: pageInfo.title,
        centerTitle: pageInfo.centerTitle,
        onPageFinished: (String url) {
          if (isFinish) return;
          debugPrint(url);
          if (url.contains("error=")) {
            Navigator.of(context).pop(
              Exception(Uri.parse(url).queryParameters["error"]),
            );
          } else if (url.startsWith(redirectUrl)) {
            var uri = Uri.parse(url);
            if (uri.queryParameters.containsKey('code') &&
                uri.queryParameters.containsKey('state') &&
                uri.queryParameters['state'] == stateCode) {
              isFinish = true;
              Navigator.of(context).pop(uri.queryParameters["code"]);
            }
          }
        },
      ),
    ),
  );
}