This commit is contained in:
Felipe
2023-11-17 17:53:54 -05:00
parent ef58892c13
commit a760c3c863
4 changed files with 245 additions and 130 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

+99 -10
View File
@@ -147,15 +147,29 @@ class _ServiceScreenState extends State<ServiceScreen> {
_saveToken(); _saveToken();
BitmapDescriptor.fromAssetImage( if (Platform.isAndroid) {
const ImageConfiguration(size: Size(1, 1)), 'images/pro_marke.png') BitmapDescriptor.fromAssetImage(
.then((icon) { const ImageConfiguration(size: Size(2, 2)),
if (mounted) { 'images/pro_marke_android.png',
setState(() { ).then((icon) {
_markerIcon = icon; if (mounted) {
}); setState(() {
} _markerIcon = icon;
}); });
}
});
} else {
BitmapDescriptor.fromAssetImage(
const ImageConfiguration(size: Size(1, 1)),
'images/pro_marke.png',
).then((icon) {
if (mounted) {
setState(() {
_markerIcon = icon;
});
}
});
}
updateMarkersForServiceType(_serviceType); updateMarkersForServiceType(_serviceType);
} }
@@ -177,6 +191,7 @@ class _ServiceScreenState extends State<ServiceScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context); final userProvider = Provider.of<UserProvider>(context);
UserModel? user = userProvider.user; UserModel? user = userProvider.user;
dynamic datos;
return SafeArea( return SafeArea(
child: Scaffold( child: Scaffold(
@@ -328,6 +343,80 @@ class _ServiceScreenState extends State<ServiceScreen> {
updateMarkersForServiceType(_serviceType); updateMarkersForServiceType(_serviceType);
}); });
datos = await Navigator.push(
context,
CupertinoPageRoute(
builder: (BuildContext context) {
return ProfessionalScreen(
profession: _serviceTypeController.text,
);
},
),
);
if (datos != null) {
Professional? profesional = datos[0];
ubicacion = datos[1];
if (profesional != null) {
if (mounted) {
setState(() {
_profesionalController.text =
profesional.name.toString();
professionalId = profesional.id;
if (profesional.token != '') {
professionalToken = profesional.token!;
}
professionalTarifa =
profesional.tarifa ?? 0;
professionalUbicacion =
profesional.ubicacion;
professionalLatitude = profesional.latitude;
professionalLongitude =
profesional.longitude;
if (ubicacion == 'sitio') {
professionalAddress =
profesional.realAddress;
_locacionController.text =
profesional.realAddress;
LatLng professionalCoordinates = LatLng(
professionalLatitude!,
professionalLongitude!);
if (professionalLatitude != null &&
professionalLatitude != 0 &&
professionalLongitude != null &&
professionalLongitude != 0) {
_animateCameraToPosition(
LatLng(professionalLatitude!,
professionalLongitude!),
);
getPolylinePoints(_currentP!,
professionalCoordinates)
.then(
(coordinates) => {
generatePolyLineFromPoints(
coordinates),
},
);
}
} else {
polylines.clear();
}
});
}
}
}
} }
} }
}, },
@@ -367,7 +456,7 @@ class _ServiceScreenState extends State<ServiceScreen> {
return; return;
} }
final dynamic datos = await Navigator.push( datos = await Navigator.push(
context, context,
CupertinoPageRoute( CupertinoPageRoute(
builder: (BuildContext context) { builder: (BuildContext context) {
+132 -119
View File
@@ -300,127 +300,140 @@ class _ProfessionalScreenState extends State<ProfessionalScreen> {
), ),
), ),
), ),
Expanded( professionals.isEmpty
child: ListView.builder( ? Expanded(
itemCount: professionals.length, child: Padding(
itemBuilder: (BuildContext context, int index) { padding:
return ListTile( const EdgeInsets.only(left: 20, right: 20, top: 50),
leading: GestureDetector( child:
onTap: () { Text('Aún no tenemos ningun(a) ${widget.profession}'),
Navigator.of(context).push( ))
CupertinoPageRoute( : Expanded(
builder: (BuildContext context) { child: ListView.builder(
return ProfessionalInfoScreen( itemCount: professionals.length,
professional: professionals[index], itemBuilder: (BuildContext context, int index) {
); return ListTile(
}, leading: GestureDetector(
), onTap: () {
); Navigator.of(context).push(
}, CupertinoPageRoute(
child: ReferencePhoto( builder: (BuildContext context) {
ref: professionals[index].professionalRef, return ProfessionalInfoScreen(
sizeCircle: 50, professional: professionals[index],
size: 50, );
sizeIcon: 35, },
),
),
trailing: GestureDetector(
child: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(
CupertinoPageRoute(
builder: (BuildContext context) {
return ProfessionalInfoScreen(
professional: professionals[index],
);
},
),
);
},
),
title: RichText(
text: TextSpan(
style: const TextStyle(
fontSize: 15.0,
color: Colors.black,
),
children: <TextSpan>[
TextSpan(
text: '${professionals[index].name}, ',
style: const TextStyle(fontWeight: FontWeight.bold),
),
TextSpan(
text:
"${professionals[index].professionName}, ${professionals[index].cityName}",
style: TextStyle(color: Colors.grey[600]),
),
],
),
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
settings?.tarifas == true
? professionals[index].tarifa == 0
? const SizedBox()
: Container(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 5),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20.0),
color: const Color(0xFFD6F4FF),
),
child: Text(
formatCurrency(
professionals[index].tarifa ?? 0),
style: TextStyle(
color: Colors.grey[850],
fontWeight: FontWeight.w600,
),
),
)
: const SizedBox(),
professionals[index].ubicacion == 'ambos'
? Text(
'Disponibilidad a domicilio y en sitio ${professionals[index].tarifa}',
style: const TextStyle(
color: Colors.blue,
), ),
) );
: professionals[index].ubicacion == 'sitio' },
? Text( child: ReferencePhoto(
'Disponibilidad en ${professionals[index].ubicacion} ', ref: professionals[index].professionalRef,
style: const TextStyle( sizeCircle: 50,
color: Colors.blue, size: 50,
), sizeIcon: 35,
) ),
: Text( ),
'Disponibilidad a ${professionals[index].ubicacion}', trailing: GestureDetector(
style: const TextStyle( child: const Icon(Icons.keyboard_arrow_right),
color: Colors.blue, onTap: () {
), Navigator.of(context).push(
), CupertinoPageRoute(
], builder: (BuildContext context) {
return ProfessionalInfoScreen(
professional: professionals[index],
);
},
),
);
},
),
title: RichText(
text: TextSpan(
style: const TextStyle(
fontSize: 15.0,
color: Colors.black,
),
children: <TextSpan>[
TextSpan(
text: '${professionals[index].name}, ',
style: const TextStyle(
fontWeight: FontWeight.bold),
),
TextSpan(
text:
"${professionals[index].professionName}, ${professionals[index].cityName}",
style: TextStyle(color: Colors.grey[600]),
),
],
),
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
settings?.tarifas == true
? professionals[index].tarifa == 0
? const SizedBox()
: Container(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 5),
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(20.0),
color: const Color(0xFFD6F4FF),
),
child: Text(
formatCurrency(
professionals[index].tarifa ??
0),
style: TextStyle(
color: Colors.grey[850],
fontWeight: FontWeight.w600,
),
),
)
: const SizedBox(),
professionals[index].ubicacion == 'ambos'
? Text(
'Disponibilidad a domicilio y en sitio ${professionals[index].tarifa}',
style: const TextStyle(
color: Colors.blue,
),
)
: professionals[index].ubicacion == 'sitio'
? Text(
'Disponibilidad en ${professionals[index].ubicacion} ',
style: const TextStyle(
color: Colors.blue,
),
)
: Text(
'Disponibilidad a ${professionals[index].ubicacion}',
style: const TextStyle(
color: Colors.blue,
),
),
],
),
onTap: () {
if (professionals[index].ubicacion == 'ambos') {
_showChoiceDialog(context).then((String? value) {
if (value != null) {
Navigator.pop(
context, [professionals[index], value]);
}
});
} else if (professionals[index].ubicacion ==
'sitio') {
Navigator.pop(
context, [professionals[index], 'sitio']);
} else {
Navigator.pop(
context, [professionals[index], 'domicilio']);
}
},
);
},
), ),
onTap: () { ),
if (professionals[index].ubicacion == 'ambos') {
_showChoiceDialog(context).then((String? value) {
if (value != null) {
Navigator.pop(
context, [professionals[index], value]);
}
});
} else if (professionals[index].ubicacion == 'sitio') {
Navigator.pop(context, [professionals[index], 'sitio']);
} else {
Navigator.pop(
context, [professionals[index], 'domicilio']);
}
},
);
},
),
),
], ],
), ),
), ),
+14 -1
View File
@@ -1,7 +1,9 @@
import 'package:diacritic/diacritic.dart'; import 'package:diacritic/diacritic.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/components/pop_appbar.dart';
import 'package:prosappco/src/presentation/screens/profession.dart'; import 'package:prosappco/src/presentation/screens/profession.dart';
import 'package:prosappco/src/presentation/screens/professional.dart';
class ServiceTypeScreen extends StatefulWidget { class ServiceTypeScreen extends StatefulWidget {
const ServiceTypeScreen({super.key}); const ServiceTypeScreen({super.key});
@@ -52,7 +54,7 @@ class _ServiceTypeScreenState extends State<ServiceTypeScreen> {
), ),
); );
} }
var professions = filteredProfessions!; List<String> professions = filteredProfessions!;
return Scaffold( return Scaffold(
appBar: PopAppbar( appBar: PopAppbar(
@@ -86,6 +88,17 @@ class _ServiceTypeScreenState extends State<ServiceTypeScreen> {
), ),
onTap: () { onTap: () {
Navigator.pop(context, professions[index]); Navigator.pop(context, professions[index]);
// Navigator.push(
// context,
// CupertinoPageRoute(
// builder: (BuildContext context) {
// return ProfessionalScreen(
// profession: professions[index],
// );
// },
// ),
// );
}, },
); );
}, },