post_enrollment_app/lib/pages/postEnrollment/botman_chat.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),
);
}
}