signIn static method
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,
)))));
}