// import 'dart:async';
// import 'dart:collection';

// import 'package:flutter/material.dart';
// import 'package:flutter_riverpod/flutter_riverpod.dart';
// import 'package:hub/backend/api_requests/api_calls.dart';
// import 'package:hub/flutter_flow/flutter_flow_theme.dart';
// import 'package:hub/flutter_flow/flutter_flow_util.dart';
// import 'package:provider/provider.dart';
// import 'package:rxdart/rxdart.dart';

// //

// final dropdown = BehaviorSubject<LinkedHashMap<String, String>>.seeded(
//   LinkedHashMap.from({
//     'All': 'A',
//   }),
// );

// class MessageWellComponentWidget extends StatefulWidget {
//   const MessageWellComponentWidget({super.key});

//   @override
//   State<MessageWellComponentWidget> createState() => _MessageWellComponentWidgetState();
// }

// class _MessageWellComponentWidgetState extends State<MessageWellComponentWidget> {
//   StreamSubscription? _dropdownSubscription;

//   @override
//   void initState() {
//     super.initState();
//     WidgetsBinding.instance.addPostFrameCallback((_) {
//       context.read<MessageWellNotifier>().fetchMessages();
//     });

//     _dropdownSubscription = dropdown.stream.listen((_) {
//       context.read<MessageWellNotifier>().fetchMessages();
//     });
//   }

//   @override
//   void dispose() {
//     _dropdownSubscription?.cancel();
//     super.dispose();
//   }

//   @override
//   Widget build(BuildContext context) {
//     final messages = context.read<MessageWellNotifier>().getMessages();
//     return Align(
//       alignment: Alignment.center,
//       child: Padding(
//         padding: const EdgeInsets.symmetric(vertical: 40.0),
//         child: SizedBox(
//           height: MediaQuery.of(context).size.height * 0.8,
//           child: Column(
//             children: [
//               _buildHandleMessageWell(context, FlutterFlowTheme.of(context)),
//               _buildMenuMessageWell(context, FlutterFlowTheme.of(context)),
//               Expanded(
//                 child: ListView.builder(
//                   itemCount: messages.length,
//                   shrinkWrap: true,
//                   physics: const AlwaysScrollableScrollPhysics(),
//                   itemBuilder: (context, index) {
//                     var message = messages[index];
//                     return _buildMessageItem(context, message, index);
//                   },
//                 ),
//               ),
//             ],
//           ),
//         ),
//       ),
//     );
//   }

//   Widget _buildMenuMessageWell(BuildContext context, FlutterFlowTheme theme) {
//     final dropdownItems = LinkedHashMap.from({
//       'All': 'A',
//       'Personal': 'O',
//       'Global': 'C',
//     });
//     return SizedBox(
//       key: UniqueKey(),
//       width: 200,
//       height: 40,
//       child: StreamBuilder<String>(
//         stream: dropdown.stream.map((event) => event.keys.first),
//         builder: (context, snapshot) {
//           final value = snapshot.data;
//           return DropdownButtonFormField<String>(
//             value: value,
//             decoration: InputDecoration(
//               isDense: true,
//               contentPadding: const EdgeInsets.symmetric(horizontal: 10.0),
//               errorBorder: OutlineInputBorder(
//                 borderSide: BorderSide(
//                   color: theme.error,
//                   width: 2,
//                 ),
//                 borderRadius: BorderRadius.circular(10),
//               ),
//               enabledBorder: OutlineInputBorder(
//                 borderSide: BorderSide(
//                   color: theme.primary,
//                   width: 2,
//                 ),
//                 borderRadius: BorderRadius.circular(10),
//               ),
//               focusedBorder: OutlineInputBorder(
//                 borderSide: BorderSide(
//                   color: theme.primary,
//                   width: 2,
//                 ),
//                 borderRadius: BorderRadius.circular(10),
//               ),
//               disabledBorder: OutlineInputBorder(
//                 borderSide: BorderSide(
//                   color: theme.primary,
//                   width: 2,
//                 ),
//                 borderRadius: BorderRadius.circular(10),
//               ),
//               focusedErrorBorder: OutlineInputBorder(
//                 borderSide: BorderSide(
//                   color: theme.error,
//                   width: 2,
//                 ),
//                 borderRadius: BorderRadius.circular(10),
//               ),
//               border: OutlineInputBorder(
//                 borderSide: BorderSide(
//                   color: theme.primary,
//                   width: 2,
//                 ),
//                 borderRadius: BorderRadius.circular(10),
//               ),
//               filled: true,
//               fillColor: theme.primary,
//             ),
//             onChanged: (String? newValue) {
//               safeSetState(() => dropdown.value = LinkedHashMap.from({newValue!: dropdownItems[newValue].toString()}));
//             },
//             items: dropdownItems.entries
//                 .map((entry) => DropdownMenuItem<String>(
//                       value: entry.key,
//                       child: Text(entry.key),
//                     ))
//                 .toList(),
//             style: theme.bodyMedium.copyWith(
//               color: theme.primaryText,
//             ),
//           );
//         },
//       ),
//     );
//   }

//   Text _buildHandleMessageWell(BuildContext context, FlutterFlowTheme theme) {
//     return Text(
//       FFLocalizations.of(context).getVariableText(
//         ptText: 'Mural de Mensagens',
//         enText: 'Message Wall',
//       ),
//       style: theme.bodyMedium.copyWith(
//         fontFamily: 'Nunito Sans',
//         letterSpacing: 0.0,
//       ),
//     );
//   }

//   Widget _buildMessageItem(BuildContext context, dynamic message, int index) {
//     FlutterFlowTheme.of(context);
//     String formatMessageOrigin(String messageOrigin) {
//       final words = messageOrigin.split(' ');
//       final formattedWords = words.map((word) {
//         if (word.isEmpty) return word; // Handle empty words
//         final firstLetter = word.substring(0, 1).toUpperCase();
//         final remainingLetters = word.length > 1 ? word.substring(1).toLowerCase() : '';
//         return '$firstLetter$remainingLetters';
//       });
//       return formattedWords.join(' ');
//     }

//     return Padding(
//         padding: const EdgeInsets.symmetric(horizontal: 30),
//         child: Card(
//           color: FlutterFlowTheme.of(context).primaryBackground,
//           child: Container(
//             // height: 100,
//             child: Padding(
//               padding: const EdgeInsets.all(8.0),
//               child: Column(
//                 mainAxisAlignment: MainAxisAlignment.center,
//                 children: [
//                   Padding(
//                     padding: const EdgeInsets.symmetric(horizontal: 15.0),
//                     child: Column(
//                       crossAxisAlignment: CrossAxisAlignment.start,
//                       children: [
//                         Row(
//                           mainAxisAlignment: MainAxisAlignment.start,
//                           mainAxisSize: MainAxisSize.max,
//                           children: [
//                             Icon(
//                               message['MSG_DESTINO_TP'] == 'T'
//                                   ? Icons.language
//                                   : message['MSG_DESTINO_TP'] == 'P'
//                                       ? Icons.person
//                                       : Icons.home,
//                               color: FlutterFlowTheme.of(context).primary,
//                               size: 25,
//                             ),
//                             Expanded(
//                               child: Text(
//                                 message['MSG_ORIGEM_DESC'].toString(),
//                                 style: TextStyle(
//                                   fontWeight: FontWeight.bold,
//                                   fontSize: 15,
//                                   color: FlutterFlowTheme.of(context).primary,
//                                 ),
//                                 overflow: TextOverflow.fade,
//                               ),
//                             ),
//                           ].divide(const SizedBox(width: 10)),
//                         ),
//                         Row(
//                           mainAxisAlignment: MainAxisAlignment.start,
//                           mainAxisSize: MainAxisSize.max,
//                           children: [
//                             Padding(
//                               padding: const EdgeInsets.only(left: 5),
//                               child: Icon(
//                                 Icons.history,
//                                 color: FlutterFlowTheme.of(context).customColor6,
//                                 size: 15,
//                               ),
//                             ),
//                             Expanded(
//                               child: Text(
//                                 message['MSG_DATE'].toString(),
//                                 style: TextStyle(
//                                   fontWeight: FontWeight.bold,
//                                   fontSize: 10,
//                                   color: FlutterFlowTheme.of(context).customColor6,
//                                 ),
//                                 overflow: TextOverflow.ellipsis,
//                               ),
//                             ),
//                           ].divide(const SizedBox(width: 15)),
//                         ),
//                         Row(
//                           mainAxisAlignment: MainAxisAlignment.start,
//                           mainAxisSize: MainAxisSize.max,
//                           children: [
//                             Padding(
//                               padding: const EdgeInsets.only(left: 5),
//                               child: Icon(
//                                 Icons.message,
//                                 color: FlutterFlowTheme.of(context).customColor6,
//                                 size: 15,
//                               ),
//                             ),
//                             Expanded(
//                               child: Text(
//                                 message['MSG_TEXTO'].toString(),
//                               ),
//                             ),
//                           ].divide(const SizedBox(width: 15)),
//                         ),
//                       ].divide(const SizedBox(height: 4)),
//                     ),
//                   ),
//                   // Row(
//                   //     children: [
//                   //   Icon(
//                   //     Icons.message,
//                   //     color: FlutterFlowTheme.of(context).customColor6,
//                   //     size: 15,
//                   //   ),
//                   //   Expanded(
//                   //     child: Padding(
//                   //       padding: const EdgeInsets.all(8.0),
//                   //       child: Text(
//                   //         message['MSG_TEXTO'].toString(),
//                   //       ),
//                   //     ),
//                   //   ),
//                   // ]
//                   //         .addToStart(const SizedBox(width: 8))
//                   //         .addToEnd(const SizedBox(width: 8))),
//                 ].divide(
//                   const SizedBox(height: 8),
//                 ),
//               ),
//             ),
//           ),
//         ));
//   }
// }

// class MessageWellState {
//   final List<dynamic> messages;
//   int pageNumber;
//   final bool allowScrollInSingleChildScrollView;

//   MessageWellState({
//     required this.messages,
//     this.pageNumber = 1,
//     required this.allowScrollInSingleChildScrollView,
//   });

//   MessageWellState copyWith({
//     List<dynamic>? messages,
//     int? pageNumber,
//     bool? allowScrollInSingleChildScrollView,
//   }) {
//     return MessageWellState(
//       messages: messages ?? this.messages,
//       pageNumber: pageNumber ?? this.pageNumber,
//       allowScrollInSingleChildScrollView: allowScrollInSingleChildScrollView ?? this.allowScrollInSingleChildScrollView,
//     );
//   }
// }

// class MessageWellNotifier extends StateNotifier<MessageWellState> {
//   var _totalPageNumber = 1;
//   int get totalPageNumber => _totalPageNumber;

//   set totalPageNumber(int value) {
//     _totalPageNumber = value;
//   }

//   MessageWellNotifier()
//       : super(MessageWellState(
//           messages: [],
//           allowScrollInSingleChildScrollView: true,
//         )) {
//     fetchMessages();
//   }

//   void fetchMessages() async {
//     if (state.pageNumber <= totalPageNumber) {
//       var apiCall = GetMessagesCall();
//       var response = await apiCall.call(
//         pageSize: '100',
//         pageNumber: state.pageNumber.toString(),
//         tipoDestino: dropdown.value.values.first,
//       );
//       if (response.statusCode == 200) {
//         var messagesData = response.jsonBody['mensagens'];
//         var newMessages = [...state.messages, ...messagesData];
//         state = state.copyWith(messages: newMessages);
//         // var rExp = RegExp(r'\d+')
//         //     .allMatches(newMessages.toString())
//         //     .map((e) => e.group(0))
//         //     .toList();
//         // Provider.of<MessageCounter>(context, listen: false).setCounter(int.parse(response.jsonBody['total_pages']));
//         // totalPageNumber = int.parse(response.jsonBody['total_pages']);
//       } else {}
//     } else {}
//   }

//   List<dynamic> getMessages() {
//     return state.messages;
//   }

//   void incrementPageNumber() {
//     if (state.pageNumber <= totalPageNumber) {
//       state = state.copyWith(pageNumber: state.pageNumber + 1);
//     }
//   }
// }

// final messageWellProvider = StateNotifierProvider<MessageWellNotifier, MessageWellState>((ref) {
//   return MessageWellNotifier();
// });
