helpdesk_package 0.0.5
helpdesk_package: ^0.0.5 copied to clipboard
A new Flutter packagefor helpdesk
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:helpdesk_package/chat_service.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await ChatService.instance.init(); // Connect to MQTT broker
runApp(const AdminApp());
}
class AdminApp extends StatelessWidget {
const AdminApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: AdminScreen(appId: "my_app_123"),
);
}
}
class AdminScreen extends StatefulWidget {
final String appId;
const AdminScreen({super.key, required this.appId});
@override
State<AdminScreen> createState() => _AdminScreenState();
}
class _AdminScreenState extends State<AdminScreen> {
final _messages = <String>[];
String? _selectedUser;
@override
void initState() {
super.initState();
ChatService.instance.subscribeAdmin(
appId: widget.appId,
onMessage: (msg, userId) {
setState(() => _messages.add("User($userId): $msg"));
},
);
}
@override
Widget build(BuildContext context) {
final controller = TextEditingController();
return Scaffold(
appBar: AppBar(title: const Text("Admin Panel")),
body: Column(
children: [
Expanded(
child: ListView(
children: _messages.map((m) => ListTile(title: Text(m))).toList(),
),
),
TextField(
controller: controller,
onSubmitted: (msg) {
if (_selectedUser != null) {
ChatService.instance.sendMessage(
appId: widget.appId,
userId: _selectedUser!,
message: msg,
fromAdmin: true,
);
setState(() => _messages.add("Admin → $_selectedUser: $msg"));
controller.clear();
}
},
decoration: const InputDecoration(
hintText: "Reply (select user first)",
),
)
],
),
);
}
}