helpdesk_package 0.0.1
helpdesk_package: ^0.0.1 copied to clipboard
A new Flutter packagefor helpdesk
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:helpdesk_package/helpdesk_package.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(title: 'Helpdesk Demo', home: ChatScreen());
}
}
class ChatScreen extends StatefulWidget {
@override
State<ChatScreen> createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
final helpDesk = HelpDeskService();
final _controller = TextEditingController();
final String appId = "app123";
final String userId = "user456";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("User Helpdesk")),
body: Column(
children: [
Expanded(
child: StreamBuilder<List<Message>>(
stream: helpDesk.listenMessages(appId: appId, userId: userId),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return const Center(child: CircularProgressIndicator());
}
final messages = snapshot.data!;
return ListView.builder(
itemCount: messages.length,
itemBuilder: (context, index) {
final msg = messages[index];
return Align(
alignment: msg.sender == "user"
? Alignment.centerRight
: Alignment.centerLeft,
child: Container(
margin: const EdgeInsets.all(6),
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
color: msg.sender == "user" ? Colors.blue : Colors.grey,
borderRadius: BorderRadius.circular(8),
),
child: Text(msg.text,
style: const TextStyle(color: Colors.white)),
),
);
},
);
},
),
),
Row(
children: [
Expanded(child: TextField(controller: _controller)),
IconButton(
icon: const Icon(Icons.send),
onPressed: () {
if (_controller.text.isNotEmpty) {
helpDesk.sendMessage(
appId: appId,
userId: userId,
text: _controller.text,
sender: "user",
);
_controller.clear();
}
},
)
],
),
],
),
);
}
}