In‑App Chat for Mobile App
Last updated
dependencies:
flutter:
sdk: flutter
webview_flutter: ^4.8.0
webview_flutter_android: ^3.16.0
webview_flutter_wkwebview: ^3.13.0flutter pub get<uses-permission android:name="android.permission.INTERNET" /><key>NSCameraUsageDescription</key>
<string>Camera access is required to share images via chat.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone access is required for voice messages.</string>import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class KlinkChat extends StatelessWidget {
const KlinkChat({super.key, required this.url});
final String url; // one of the 3 URLs above
@override
Widget build(BuildContext context) {
final controller = WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..loadRequest(Uri.parse(url));
return WebViewWidget(controller: controller);
}
}Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => const Scaffold(
appBar: AppBar(title: Text('Support')),
body: KlinkChat(
url: 'https://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&showHeader=false',
),
),
),
);showModalBottomSheet(
context: context,
useSafeArea: true,
isScrollControlled: true,
builder: (_) => SizedBox(
height: MediaQuery.of(context).size.height * 0.85,
child: const KlinkChat(
url: 'https://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&view=widget',
),
),
);...&userName=John&userEmail=john@klink.cloudhttps://chat.klink.cloud/app/index.html?scId=YOUR_SCID_HERE&showHeader=false&defaultMessage=Order%20number%3A%203388338%0AName%3A%20John%0APhone%3A%2093939838838Order number: 3388338
Name: John
Phone: 93939838838