You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohemm-flutter-app/lib/widgets/sso_webview_widget.dart

62 lines
1.9 KiB
Dart

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class SsoLoginWebView extends StatefulWidget {
final String url;
final String jwtToken;
SsoLoginWebView({required this.url, required this.jwtToken});
@override
State<SsoLoginWebView> createState() => _SsoLoginWebViewState();
}
class _SsoLoginWebViewState extends State<SsoLoginWebView> {
late final WebViewController _controller;
@override
void initState() {
// TODO: implement initState
super.initState();
_controller =
WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..setNavigationDelegate(
NavigationDelegate(
onProgress: (int progress) {
print("WebView is loading (progress: $progress%)");
},
onPageStarted: (String url) {
print("Page started loading: $url");
},
onPageFinished: (String url) {
print("Page finished loading: $url");
},
onHttpError: (HttpResponseError error) {
print("HTTP error: ${error.toString()} for URL: ${error.response!.statusCode}");
},
onWebResourceError: (WebResourceError error) {
print("Web resource error: ${error.description} for URL: ${error.errorType}");
},
),
)
..loadHtmlString('''
<!DOCTYPE html>
<html>
<body onload="document.forms[0].submit()">
<form method="POST" action="https://ek.techmaster.in/SSO/HMG">
<input type="hidden" name="JWTToken" value="${widget.jwtToken}" />
</form>
<h1>Redirecting...</h1>
</body>
</html>''');
}
@override
Widget build(BuildContext context) {
return Scaffold(appBar: AppBar(title: Text('Logging in...')), body: WebViewWidget(controller: _controller));
}
}