diff --git a/lib/src/screens/calendar.dart b/lib/src/screens/calendar.dart index 12cf391..c58bce7 100644 --- a/lib/src/screens/calendar.dart +++ b/lib/src/screens/calendar.dart @@ -170,7 +170,7 @@ class _CalendarScreenState extends State { content: StatefulBuilder( builder: (BuildContext context, StateSetter setStateDialog) { return SizedBox( - height: 350, + height: 800, child: Column( children: [ Padding( diff --git a/lib/src/screens/cita.dart b/lib/src/screens/cita.dart index 6dcc0a2..0fa8c78 100644 --- a/lib/src/screens/cita.dart +++ b/lib/src/screens/cita.dart @@ -234,45 +234,47 @@ class _CitaScreenState extends State { ], ), ), - Container( - margin: const EdgeInsets.only( - left: 40, right: 40, top: 20, bottom: 20), - padding: - const EdgeInsets.symmetric(horizontal: 20, vertical: 15), - decoration: BoxDecoration( - color: const Color(0xFFD6F4FF), - borderRadius: BorderRadius.circular(20), - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 1, - blurRadius: 5, - offset: const Offset(1, 3), - ), - ], - ), - child: Row( - children: [ - const Icon( - Icons.error_outline, - size: 27, - color: Colors.black54, - ), - const SizedBox(width: 15), - widget.evento.ubicacion != 'sitio' - ? const Text( - 'Servicio a domicilio.', - style: - TextStyle(color: Colors.black, fontSize: 14), - ) - : const Text( - 'Servicio en su sitio / consultorio', - style: - TextStyle(color: Colors.black, fontSize: 14), + widget.evento.userId == widget.evento.professionalId + ? const SizedBox() + : Container( + margin: const EdgeInsets.only( + left: 40, right: 40, top: 20, bottom: 20), + padding: const EdgeInsets.symmetric( + horizontal: 20, vertical: 15), + decoration: BoxDecoration( + color: const Color(0xFFD6F4FF), + borderRadius: BorderRadius.circular(20), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(1, 3), ), - ], - ), - ), + ], + ), + child: Row( + children: [ + const Icon( + Icons.error_outline, + size: 27, + color: Colors.black54, + ), + const SizedBox(width: 15), + widget.evento.ubicacion != 'sitio' + ? const Text( + 'Servicio a domicilio.', + style: TextStyle( + color: Colors.black, fontSize: 14), + ) + : const Text( + 'Servicio en su sitio / consultorio', + style: TextStyle( + color: Colors.black, fontSize: 14), + ), + ], + ), + ), settings?.tarifas == true && widget.evento.tarifa != 0 ? Column( children: [ @@ -293,249 +295,259 @@ class _CitaScreenState extends State { style: const TextStyle( color: Colors.grey, fontStyle: FontStyle.italic), ), - widget.evento.status == 'terminado' - ? const SizedBox(height: 10) - : const Padding( - padding: EdgeInsets.symmetric(vertical: 20), - child: Text( - 'Medios de comunicación con el usuario.', - style: TextStyle(color: Color(0xFF2BA4EC)), - ), - ), - widget.evento.status == 'terminado' - ? pro == true - ? widget.evento.professionalScored == true - ? const SizedBox() - : Column( - children: [ - const SizedBox(height: 120), - ElevatedButton( - onPressed: () { - Navigator.pushReplacement( - context, - CupertinoPageRoute( - builder: (BuildContext context) { - return ScoreScreen( - evento: widget.evento, - pro: pro!, - ); - }, - ), - ); - }, - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF2BA4EC), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - ), - elevation: 0, - minimumSize: const Size(230, 60), - ), - child: const Text( - 'Puntuar servicio', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 18, - ), - ), - ), - ], - ) - : widget.evento.userScored == true - ? const SizedBox() - : Column( - children: [ - const SizedBox(height: 120), - ElevatedButton( - onPressed: () { - Navigator.pushReplacement( - context, - CupertinoPageRoute( - builder: (BuildContext context) { - return ScoreScreen( - evento: widget.evento, - pro: pro!, - ); - }, - ), - ); - }, - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF2BA4EC), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - ), - elevation: 0, - minimumSize: const Size(230, 60), - ), - child: const Text( - 'Puntuar servicio', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 18, - ), - ), - ), - ], - ) - : Row( - children: [ - const Expanded(child: SizedBox()), - ElevatedButton( - onPressed: () => launch("tel:$numberPhone"), - style: ElevatedButton.styleFrom( - foregroundColor: const Color(0xFF2BA4EC), - backgroundColor: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - side: const BorderSide( - color: Color(0xFF2BA4EC), - width: 2, - ), - ), - ), - child: const Padding( - padding: EdgeInsets.symmetric( - vertical: 18, horizontal: 0), - child: Icon( - Icons.phone_android, - size: 30, - color: Color(0xFF2BA4EC), - ), + widget.evento.userId == widget.evento.professionalId + ? const SizedBox() + : widget.evento.status == 'terminado' + ? const SizedBox(height: 10) + : const Padding( + padding: EdgeInsets.symmetric(vertical: 20), + child: Text( + 'Medios de comunicación con el usuario.', + style: TextStyle(color: Color(0xFF2BA4EC)), ), ), - const SizedBox(width: 20), - ElevatedButton( - onPressed: () async { - if (widget.evento.status != 'pendiente') { - final chatDoc = FirebaseFirestore.instance - .collection('chats') - .doc(widget.evento.id); - final chatSnapshot = await chatDoc.get(); - - if (!chatSnapshot.exists || - chatSnapshot.data()!['message'] == null) { - await chatDoc.set( - { - 'professional_id': - widget.evento.professionalId, - 'user_id': widget.evento.userId, - 'message': [], - }, - SetOptions(merge: true), - ).catchError((error) => print( - 'Error al crear el documento: $error')); - } - - Navigator.push( - context, - CupertinoPageRoute( - builder: (BuildContext context) { - return ChatScreen( - eventoId: widget.evento.id); - }, - ), - ); - } - - // if (widget.evento.status != 'pendiente') { - // await FirebaseFirestore.instance - // .collection('chats') - // .doc(widget.evento.id) - // .set( - // { - // 'professional_id': - // widget.evento.professionalId, - // 'user_id': widget.evento.userId, - // 'message': [], - // }, - // SetOptions( - // merge: - // true)).catchError((error) => print( - // 'Error al crear el documento: $error')); - - // Navigator.push( - // context, - // CupertinoPageRoute( - // builder: (BuildContext context) { - // return ChatScreen( - // eventoId: widget.evento.id); - // }, - // ), - // ); - // } - else { - final snackBar = SnackBar( - backgroundColor: Colors.blue, - content: const Text( - 'Primero acepta la solicitud', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - ), - ), - elevation: 8.0, + widget.evento.userId == widget.evento.professionalId + ? const SizedBox() + : widget.evento.status == 'terminado' + ? pro == true + ? widget.evento.professionalScored == true + ? const SizedBox() + : Column( + children: [ + const SizedBox(height: 120), + ElevatedButton( + onPressed: () { + Navigator.pushReplacement( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return ScoreScreen( + evento: widget.evento, + pro: pro!, + ); + }, + ), + ); + }, + style: ElevatedButton.styleFrom( + backgroundColor: + const Color(0xFF2BA4EC), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: const Size(230, 60), + ), + child: const Text( + 'Puntuar servicio', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + ), + ], + ) + : widget.evento.userScored == true + ? const SizedBox() + : Column( + children: [ + const SizedBox(height: 120), + ElevatedButton( + onPressed: () { + Navigator.pushReplacement( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return ScoreScreen( + evento: widget.evento, + pro: pro!, + ); + }, + ), + ); + }, + style: ElevatedButton.styleFrom( + backgroundColor: + const Color(0xFF2BA4EC), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: const Size(230, 60), + ), + child: const Text( + 'Puntuar servicio', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + ), + ], + ) + : Row( + children: [ + const Expanded(child: SizedBox()), + ElevatedButton( + onPressed: () => launch("tel:$numberPhone"), + style: ElevatedButton.styleFrom( + foregroundColor: const Color(0xFF2BA4EC), + backgroundColor: Colors.white, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), + borderRadius: BorderRadius.circular(50), + side: const BorderSide( + color: Color(0xFF2BA4EC), + width: 2, + ), ), - ); + ), + child: const Padding( + padding: EdgeInsets.symmetric( + vertical: 18, horizontal: 0), + child: Icon( + Icons.phone_android, + size: 30, + color: Color(0xFF2BA4EC), + ), + ), + ), + const SizedBox(width: 20), + ElevatedButton( + onPressed: () async { + if (widget.evento.status != 'pendiente') { + final chatDoc = FirebaseFirestore.instance + .collection('chats') + .doc(widget.evento.id); + final chatSnapshot = await chatDoc.get(); - ScaffoldMessenger.of(context) - .showSnackBar(snackBar); - } - }, - style: ElevatedButton.styleFrom( - foregroundColor: const Color(0xFF2BA4EC), - backgroundColor: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - side: const BorderSide( - color: Color(0xFF2BA4EC), - width: 2, + if (!chatSnapshot.exists || + chatSnapshot.data()!['message'] == + null) { + await chatDoc.set( + { + 'professional_id': + widget.evento.professionalId, + 'user_id': widget.evento.userId, + 'message': [], + }, + SetOptions(merge: true), + ).catchError((error) => print( + 'Error al crear el documento: $error')); + } + + Navigator.push( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return ChatScreen( + eventoId: widget.evento.id); + }, + ), + ); + } + + // if (widget.evento.status != 'pendiente') { + // await FirebaseFirestore.instance + // .collection('chats') + // .doc(widget.evento.id) + // .set( + // { + // 'professional_id': + // widget.evento.professionalId, + // 'user_id': widget.evento.userId, + // 'message': [], + // }, + // SetOptions( + // merge: + // true)).catchError((error) => print( + // 'Error al crear el documento: $error')); + + // Navigator.push( + // context, + // CupertinoPageRoute( + // builder: (BuildContext context) { + // return ChatScreen( + // eventoId: widget.evento.id); + // }, + // ), + // ); + // } + else { + final snackBar = SnackBar( + backgroundColor: Colors.blue, + content: const Text( + 'Primero acepta la solicitud', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + elevation: 8.0, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(10.0), + ), + ); + + ScaffoldMessenger.of(context) + .showSnackBar(snackBar); + } + }, + style: ElevatedButton.styleFrom( + foregroundColor: const Color(0xFF2BA4EC), + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + side: const BorderSide( + color: Color(0xFF2BA4EC), + width: 2, + ), + ), + ), + child: const Padding( + padding: EdgeInsets.symmetric( + vertical: 18, horizontal: 0), + child: Icon( + Icons.message, + size: 30, + color: Color(0xFF2BA4EC), + ), ), ), - ), - child: const Padding( - padding: EdgeInsets.symmetric( - vertical: 18, horizontal: 0), - child: Icon( - Icons.message, - size: 30, - color: Color(0xFF2BA4EC), - ), - ), - ), - const SizedBox(width: 20), - ElevatedButton( - onPressed: () { - _sendWhatsapp(numberPhone); - }, - style: ElevatedButton.styleFrom( - foregroundColor: const Color(0xFF2BA4EC), - backgroundColor: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - side: const BorderSide( - color: Color(0xFF2BA4EC), - width: 2, + const SizedBox(width: 20), + ElevatedButton( + onPressed: () { + _sendWhatsapp(numberPhone); + }, + style: ElevatedButton.styleFrom( + foregroundColor: const Color(0xFF2BA4EC), + backgroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + side: const BorderSide( + color: Color(0xFF2BA4EC), + width: 2, + ), + ), + ), + child: const Padding( + padding: EdgeInsets.symmetric( + vertical: 18, horizontal: 0), + child: Icon( + CommunityMaterialIcons.whatsapp, + size: 30, + color: Color(0xFF2BA4EC), + ), ), ), - ), - child: const Padding( - padding: EdgeInsets.symmetric( - vertical: 18, horizontal: 0), - child: Icon( - CommunityMaterialIcons.whatsapp, - size: 30, - color: Color(0xFF2BA4EC), - ), - ), + const Expanded(child: SizedBox()), + ], ), - const Expanded(child: SizedBox()), - ], - ), widget.evento.ubicacion == 'sitio' ? const SizedBox() : Padding( diff --git a/lib/src/screens/my_services.dart b/lib/src/screens/my_services.dart index 8b1da12..adbb692 100644 --- a/lib/src/screens/my_services.dart +++ b/lib/src/screens/my_services.dart @@ -87,6 +87,7 @@ class _MyServicesScreenState extends State { try { eventos.addAll(snapshot.data!); + eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); } catch (e) { print("Error" + e.toString()); } @@ -100,108 +101,137 @@ class _MyServicesScreenState extends State { return Column( children: [ - ...eventos.map( - (event) => ListTile( - tileColor: event.status == 'denegado' - ? Colors.red[100] - : Colors.blue[100], - onTap: () { - Navigator.push( - context, - CupertinoPageRoute( - builder: (BuildContext context) { - return CitaScreen(evento: event); - }, - ), - ); - }, - leading: event.status == 'aprobado' - ? const Icon( - Icons.check, - color: Colors.blue, - size: 40, - ) - : event.status == 'iniciado' - ? const Icon( - Icons.access_time, - color: Colors.blue, - size: 40, - ) - : event.status == 'pendiente' + ...eventos + .where((event) => event.professionalId != event.userId) + .map( + (event) => FutureBuilder( + future: FirebaseFirestore.instance + .collection('users') + .doc(event.professionalId) + .get(), + builder: (BuildContext context, + AsyncSnapshot profSnapshot) { + if (profSnapshot.connectionState == + ConnectionState.waiting) { + return const CircularProgressIndicator(); + } + + if (profSnapshot.hasError) { + return const Text( + 'Error al obtener los datos del profesional', + // Aquí puedes agregar un estilo de texto apropiado + ); + } + + final professionalData = profSnapshot.data; + final professionalName = + professionalData?['name'] ?? 'N/D'; + + return ListTile( + tileColor: event.status == 'denegado' + ? Colors.red[100] + : Colors.blue[100], + onTap: () { + Navigator.push( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return CitaScreen(evento: event); + }, + ), + ); + }, + leading: event.status == 'aprobado' ? const Icon( - Icons.access_time_outlined, + Icons.check, color: Colors.blue, size: 40, ) - : event.status == 'terminado' + : event.status == 'iniciado' ? const Icon( - Icons.rocket_launch, + Icons.access_time, color: Colors.blue, size: 40, ) - : const Icon( - Icons.close, - color: Colors.red, - size: 40, + : event.status == 'pendiente' + ? const Icon( + Icons.access_time_outlined, + color: Colors.blue, + size: 40, + ) + : event.status == 'terminado' + ? const Icon( + Icons.rocket_launch, + color: Colors.blue, + size: 40, + ) + : const Icon( + Icons.close, + color: Colors.red, + size: 40, + ), + title: RichText( + text: TextSpan( + children: [ + TextSpan( + text: '${professionalName}, ', + style: const TextStyle( + color: Colors.black, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + ), + TextSpan( + text: + '${DateFormat('dd MMM', 'es').format(DateTime.parse(event.day))} - ${TimeOfDay.fromDateTime(DateTime.parse(event.range1Hour1)).format(context)}', + style: TextStyle( + color: Colors.grey[600], + fontSize: 16, + ), + ), + ], + ), + ), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + RatingBar.builder( + initialRating: + event.scoresModel?.average ?? 0, + minRating: 1, + direction: Axis.horizontal, + allowHalfRating: true, + itemCount: 5, + itemSize: 25, + maxRating: 5, + itemPadding: + const EdgeInsets.symmetric(horizontal: 0), + itemBuilder: (context, _) => const Icon( + Icons.star, + color: Color(0xFF2BA4EC), ), - title: RichText( - text: TextSpan( - children: [ - TextSpan( - text: '${event.title}, ', - style: const TextStyle( - color: Colors.black, - fontWeight: FontWeight.bold, - fontSize: 16, + onRatingUpdate: (rating) {}, + ignoreGestures: true, + ), + const SizedBox(width: 5), + Text( + '(${event.scoresModel?.total.toString()}) ${event.scoresModel?.average.toStringAsFixed(1)}'), + ], + ), + Text( + '" ${event.description}"', + style: + const TextStyle(fontStyle: FontStyle.italic), + ), + ], ), - ), - TextSpan( - text: - '${DateFormat('dd MMM', 'es').format(DateTime.parse(event.day))} - ${TimeOfDay.fromDateTime(DateTime.parse(event.range1Hour1)).format(context)}', - style: TextStyle( - color: Colors.grey[600], - fontSize: 16, - ), - ), - ], + trailing: const Icon(Icons.keyboard_arrow_right), + ); + }, ), ), - subtitle: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - RatingBar.builder( - initialRating: event.scoresModel?.average ?? 0, - minRating: 1, - direction: Axis.horizontal, - allowHalfRating: true, - itemCount: 5, - itemSize: 25, - maxRating: 5, - itemPadding: - const EdgeInsets.symmetric(horizontal: 0), - itemBuilder: (context, _) => const Icon( - Icons.star, - color: Color(0xFF2BA4EC), - ), - onRatingUpdate: (rating) {}, - ignoreGestures: true, - ), - const SizedBox(width: 5), - Text( - '(${event.scoresModel?.total.toString()}) ${event.scoresModel?.average.toStringAsFixed(1)}'), - ], - ), - Text( - '" ${event.description}"', - style: const TextStyle(fontStyle: FontStyle.italic), - ), - ], - ), - trailing: const Icon(Icons.keyboard_arrow_right), - ), - ), ], ); }, diff --git a/lib/src/screens/my_services_pro.dart b/lib/src/screens/my_services_pro.dart index acf1e3e..5450dd7 100644 --- a/lib/src/screens/my_services_pro.dart +++ b/lib/src/screens/my_services_pro.dart @@ -31,10 +31,11 @@ class _MyServicesProScreenState extends State { return SafeArea( child: Scaffold( appBar: PopAppbar( - onPressed: () { - Navigator.pop(context); - }, - label: 'Mis servicios'), + onPressed: () { + Navigator.pop(context); + }, + label: 'Mis servicios', + ), drawer: DrawerProfessional(), body: SingleChildScrollView( child: Column( @@ -82,6 +83,7 @@ class _MyServicesProScreenState extends State { try { eventos.addAll(snapshot.data!); + eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); } catch (e) { print("Error" + e.toString()); } @@ -96,102 +98,100 @@ class _MyServicesProScreenState extends State { return Column( children: [ ...eventos.map( - (event) => event.userId == event.professionalId - ? const SizedBox() - : ListTile( - tileColor: event.status == 'denegado' - ? Colors.red[100] - : Colors.blue[100], - onTap: () { - Navigator.push( - context, - CupertinoPageRoute( - builder: (BuildContext context) { - return CitaScreen(evento: event); - }, - ), - ); + (event) => ListTile( + tileColor: event.status == 'denegado' + ? Colors.red[100] + : Colors.blue[100], + onTap: () { + Navigator.push( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return CitaScreen(evento: event); }, - leading: event.status == 'aprobado' - ? const Icon( - Icons.check, - color: Colors.blue, - size: 40, - ) - : event.status == 'iniciado' - ? const Icon( - Icons.access_time, - color: Colors.blue, - size: 40, - ) - : event.status == 'terminado' - ? const Icon( - Icons.rocket_launch, - color: Colors.blue, - size: 40, - ) - : const Icon( - Icons.close, - color: Colors.red, - size: 40, - ), - title: RichText( - text: TextSpan( - children: [ - TextSpan( - text: '${event.title}, ', - style: const TextStyle( - color: Colors.black, - fontWeight: FontWeight.bold, - fontSize: 16, + ), + ); + }, + leading: event.status == 'aprobado' + ? const Icon( + Icons.check, + color: Colors.blue, + size: 40, + ) + : event.status == 'iniciado' + ? const Icon( + Icons.access_time, + color: Colors.blue, + size: 40, + ) + : event.status == 'terminado' + ? const Icon( + Icons.rocket_launch, + color: Colors.blue, + size: 40, + ) + : const Icon( + Icons.close, + color: Colors.red, + size: 40, ), - ), - TextSpan( - text: - '${DateFormat('dd MMM', 'es').format(DateTime.parse(event.day))} - ${TimeOfDay.fromDateTime(DateTime.parse(event.range1Hour1)).format(context)}', - style: TextStyle( - color: Colors.grey[600], - fontSize: 16, - ), - ), - ], + title: RichText( + text: TextSpan( + children: [ + TextSpan( + text: '${event.title}, ', + style: const TextStyle( + color: Colors.black, + fontWeight: FontWeight.bold, + fontSize: 16, ), ), - subtitle: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - RatingBar.builder( - initialRating: event.scoresModel?.average ?? 0, - minRating: 1, - direction: Axis.horizontal, - allowHalfRating: true, - itemCount: 5, - itemSize: 25, - maxRating: 5, - itemPadding: - const EdgeInsets.symmetric(horizontal: 0), - itemBuilder: (context, _) => const Icon( - Icons.star, - color: Color(0xFF2BA4EC), - ), - onRatingUpdate: (rating) {}, - ignoreGestures: true, - ), - const SizedBox(width: 5), - Text( - '(${event.scoresModel?.total.toString()}) ${event.scoresModel?.average.toStringAsFixed(1)}'), - ], - ), - Text( - '" ${event.description}"', - style: const TextStyle(fontStyle: FontStyle.italic), - ), - ], + TextSpan( + text: + '${DateFormat('dd MMM', 'es').format(DateTime.parse(event.day))} - ${TimeOfDay.fromDateTime(DateTime.parse(event.range1Hour1)).format(context)}', + style: TextStyle( + color: Colors.grey[600], + fontSize: 16, + ), ), - trailing: const Icon(Icons.keyboard_arrow_right), + ], + ), + ), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + RatingBar.builder( + initialRating: event.scoresModel?.average ?? 0, + minRating: 1, + direction: Axis.horizontal, + allowHalfRating: true, + itemCount: 5, + itemSize: 25, + maxRating: 5, + itemPadding: + const EdgeInsets.symmetric(horizontal: 0), + itemBuilder: (context, _) => const Icon( + Icons.star, + color: Color(0xFF2BA4EC), + ), + onRatingUpdate: (rating) {}, + ignoreGestures: true, + ), + const SizedBox(width: 5), + Text( + '(${event.scoresModel?.total.toString()}) ${event.scoresModel?.average.toStringAsFixed(1)}'), + ], ), + Text( + '" ${event.description}"', + style: const TextStyle(fontStyle: FontStyle.italic), + ), + ], + ), + trailing: const Icon(Icons.keyboard_arrow_right), + ), ), ], ); diff --git a/lib/src/screens/solicitudes.dart b/lib/src/screens/solicitudes.dart index 0aead74..385ae99 100644 --- a/lib/src/screens/solicitudes.dart +++ b/lib/src/screens/solicitudes.dart @@ -75,6 +75,7 @@ class SolicitudScreen extends StatelessWidget { try { eventos.addAll(snapshot.data!); + eventos.sort((a, b) => a.range1Hour1.compareTo(b.range1Hour1)); } catch (e) { print("Error" + e.toString()); }