import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'chat_page.dart'; import 'chat_provider.dart'; class ChatWidget extends StatefulWidget { int moduleId; int requestId; String assigneeEmployeeNumber; String myEmployeeID; bool isReadOnly; String title; ChatWidget({Key? key, this.isReadOnly = false, this.title = "Chat", required this.moduleId, required this.requestId, required this.assigneeEmployeeNumber, required this.myEmployeeID}) : super(key: key); @override _ChatWidgetState createState() { return _ChatWidgetState(); } } class _ChatWidgetState extends State { @override void initState() { super.initState(); Provider.of(context, listen: false).reset(); getChatToken(); } void getChatToken() { ChatProvider cProvider = Provider.of(context, listen: false); if (cProvider.chatLoginResponse != null && cProvider.referenceID == widget.requestId) return; // String assigneeEmployeeNumber = Provider.of(context, listen: false).currentWorkOrder?.data?.assignedEmployee?.employeeId ?? ""; String myEmployeeId = widget.myEmployeeID; String receiver = context.userProvider.isNurse ? widget.assigneeEmployeeNumber : widget.myEmployeeID; cProvider.getUserAutoLoginTokenSilent(widget.moduleId, widget.requestId, widget.title, myEmployeeId, receiver); } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { return Consumer(builder: (pContext, requestProvider, _) { return IconButton( icon: const Icon(Icons.chat_bubble), onPressed: () { Navigator.push( context, CupertinoPageRoute( builder: (context) => ChatPage( moduleId: widget.moduleId, requestId: widget.requestId, title: widget.title, readOnly: widget.isReadOnly, assigneeEmployeeNumber: widget.assigneeEmployeeNumber, myEmployeeID: widget.myEmployeeID, ))); }, ).toShimmer(context: context, isShow: requestProvider.chatLoginTokenLoading, radius: 30, height: 30, width: 30); }); ; } }