77 lines
2.2 KiB
Dart
77 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:webview_flutter/webview_flutter.dart';
|
|
import 'package:url_launcher/url_launcher.dart';
|
|
|
|
class ChatbotWebViewPage extends StatefulWidget {
|
|
final String client_branch_id;
|
|
final String empCodeString;
|
|
final String empName;
|
|
final String empPrimaryId;
|
|
final String client_id;
|
|
|
|
const ChatbotWebViewPage({
|
|
Key? key,
|
|
required this.client_branch_id,
|
|
required this.empCodeString,
|
|
required this.empName,
|
|
required this.empPrimaryId,
|
|
required this.client_id,
|
|
}) : super(key: key);
|
|
|
|
@override
|
|
State<ChatbotWebViewPage> createState() => _ChatbotWebViewPageState();
|
|
}
|
|
|
|
class _ChatbotWebViewPageState extends State<ChatbotWebViewPage> {
|
|
late final WebViewController _controller;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
|
|
final url = Uri.parse(
|
|
'https://venbait.in/nhance/dev/chatbot'
|
|
'?employee_id=${widget.empPrimaryId}'
|
|
'&emp_code=${widget.empCodeString}'
|
|
'&origin=mob'
|
|
'&name=${widget.empName}'
|
|
'&client_id=${widget.client_id}'
|
|
'&client_branch_id=${widget.client_branch_id}',
|
|
);
|
|
|
|
_controller = WebViewController()
|
|
..setJavaScriptMode(JavaScriptMode.unrestricted)
|
|
..setBackgroundColor(Colors.transparent)
|
|
..setNavigationDelegate(
|
|
NavigationDelegate(
|
|
onNavigationRequest: (NavigationRequest request) {
|
|
debugPrint("Clicked URL: ${request.url}");
|
|
_launchInExternalBrowser(Uri.parse(request.url));
|
|
return NavigationDecision.prevent; // prevent WebView navigation
|
|
},
|
|
onWebResourceError: (error) {
|
|
debugPrint("WebView error: ${error.description}");
|
|
},
|
|
),
|
|
)
|
|
..loadRequest(url);
|
|
}
|
|
|
|
/// Launch URL in external browser (Chrome or default)
|
|
Future<void> _launchInExternalBrowser(Uri url) async {
|
|
if (await canLaunchUrl(url)) {
|
|
await launchUrl(url, mode: LaunchMode.externalApplication);
|
|
} else {
|
|
debugPrint("Could not launch $url");
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: const Text('Ask ILA')),
|
|
body: WebViewWidget(controller: _controller),
|
|
);
|
|
}
|
|
}
|