Files
sfm_app_final/lib/feature/map/widget/show_direction_widget.dart
2025-03-31 10:42:42 +07:00

125 lines
4.1 KiB
Dart

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:maps_launcher/maps_launcher.dart';
import '../../../product/constant/icon/icon_constants.dart';
import '../../../product/extension/context_extension.dart';
import '../../../product/services/language_services.dart';
import '../../../bloc/map_bloc.dart';
showDirections(
BuildContext context,
Completer<GoogleMapController> controller,
List<Marker> markers,
MapBloc mapBloc,
String originalName,
String destinationLocation,
double devicelat,
double devicelng,
) {
TextEditingController originController =
TextEditingController(text: originalName);
TextEditingController destinationController =
TextEditingController(text: destinationLocation);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: Colors.transparent,
// dismissDirection: DismissDirection.none,
duration: const Duration(minutes: 5),
content: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
appLocalization(context).map_show_direction,
style: context.titleLargeTextStyle,
),
Container(
alignment: Alignment.centerRight,
child: IconButton.outlined(
onPressed: () async {
await mapBloc.updateCameraPosition(
controller,
devicelat,
devicelng,
13.0,
);
List<LatLng> polylineCoordinates = [];
mapBloc.sinkPolylines.add(polylineCoordinates);
markers.clear();
if (context.mounted) {
ScaffoldMessenger.of(context).hideCurrentSnackBar();
}
},
icon: IconConstants.instance.getMaterialIcon(Icons.close),
),
)
],
),
Row(
children: [
Text(
'${appLocalization(context).map_start}: ',
),
SizedBox(width: context.lowValue),
Expanded(
child: TextField(
controller: originController,
readOnly: true,
),
),
],
),
SizedBox(
height: context.lowValue,
),
Row(
children: [
Text(
'${appLocalization(context).map_destination}: ',
),
SizedBox(width: context.lowValue),
Expanded(
child: TextField(
controller: destinationController,
readOnly: true,
),
),
],
),
SizedBox(height: context.lowValue),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ElevatedButton.icon(
onPressed: () async {
ScaffoldMessenger.of(context).hideCurrentSnackBar();
List<LatLng> polylineCoordinates = [];
mapBloc.sinkPolylines.add(polylineCoordinates);
MapsLauncher.launchCoordinates(devicelat, devicelng);
},
icon: IconConstants.instance
.getMaterialIcon(Icons.near_me_rounded),
label: Text(
appLocalization(context).map_stream,
),
style: ButtonStyle(
backgroundColor:
WidgetStateProperty.all<Color>(Colors.blue[300]!),
),
),
],
),
],
),
),
);
}