signIn static method

Future<LKAccount?> signIn(
  1. BuildContext context, {
  2. String? state,
})

Implementation

static Future<LKAccount?> signIn(BuildContext context,
    {String? state}) async {
  final account = await silentSignIn();
  if (account != null) return account;
  final authUrl =
      '$authorizationApi?client_id=$clientId${state != null ? '&state=${Uri.encodeQueryComponent(state)}' : ''}${redirectUri != null ? '&redirect_uri=${Uri.encodeQueryComponent(redirectUri!)}' : ''}';
  if (kIsWeb) {
    go(authUrl);
    return null;
  }
  final controller = WebViewController()
    ..setNavigationDelegate(
        NavigationDelegate(onNavigationRequest: (req) async {
      if (req.url.contains('l2k://')) {
        try {
          final uri = Uri.parse(req.url);
          final account = await codeSignIn(
              code: uri.queryParameters['code']!,
              state: uri.queryParameters['state']!);
          Navigator.pop(context, account);
        } catch (error) {
          dev.log(error.toString());
        }
        return NavigationDecision.prevent;
      }
      return NavigationDecision.navigate;
    }))
    ..loadRequest(Uri.parse(authUrl));
  return await showDialog(
      context: context,
      builder: (context) => Dialog(
          backgroundColor: Colors.transparent,
          child: ClipRRect(
              borderRadius: BorderRadius.all(Radius.circular(20)),
              child: Container(
                  width: 400,
                  height: 500,
                  child: WebViewWidget(
                    controller: controller,
                  )))));
}