You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
uco-mobile-poc/lib/app/modules/agent_location/controllers/agent_location_controller.dart

145 lines
5.1 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../core/constants/app_assets.dart';
import '../../../models/Branch.dart';
class AgentLocationController extends GetxController {
final TextEditingController searchController = TextEditingController();
BuildContext context = Get.context as BuildContext;
final RxSet<Marker> markers = <Marker>{}.obs;
final List<String> mapType = ['Normal', 'Satellite', 'Hybrid'].obs;
BitmapDescriptor? myMarker;
Rx<MapType> selectedMapType = MapType.normal.obs;
/// Change Map Type
void changeMapType(MapType newMapType) {
selectedMapType.value = newMapType;
}
@override
void onInit() {
super.onInit();
/// Initialize with some default markers
searchBranches('Normal');
}
void searchBranches(String branchName) {
/// Simulate fetching branch locations based on the city
/// Replace this with your actual logic to get branch locations
List<Branch> branches = getBranches(branchName);
/// Clear existing markers
markers.clear();
/// Add markers for each branch in the selected city
if (branches.isNotEmpty) {
branches.forEach((branch) async {
markers.add(
Marker(
markerId: MarkerId(branch.name),
position: LatLng(branch.latitude, branch.longitude),
icon: await BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueGreen),
onTap: () {
showCustomInfoWindow(branch);
},
// infoWindow: InfoWindow(
// title: branch.name,
// snippet: branch.contactNumber,
// ),
),
);
});
update();
}
}
/// Custom Info Window for marker
void showCustomInfoWindow(Branch branch) {
Clipboard.setData(ClipboardData(text: branch.name));
Clipboard.setData(ClipboardData(text: branch.contactNumber));
Clipboard.setData(ClipboardData(text: branch.address));
Get.defaultDialog(
contentPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 15),
title: branch.name,
titlePadding: const EdgeInsets.only(top: 10),
titleStyle: Theme.of(context).textTheme.titleSmall!.copyWith(fontWeight: FontWeight.w500),
content: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
AppAssets.lg_mfsys, // Replace with your logo image path
width: 35,
height: 35,
),
const SizedBox(width: 10),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
children: [
const Icon(
Icons.location_on,
size: 13,
color: Colors.blue,
),
const SizedBox(
height: 20,
),
Padding(
padding: const EdgeInsets.only(left: 10.0),
child: Text('MFSYS Technologies', style: Theme.of(context).textTheme.bodySmall!.copyWith(fontSize: 10, fontWeight: FontWeight.w400)),
),
],
),
const SizedBox(height: 10),
Row(
children: [
const Icon(
Icons.phone, // Replace with your desired icon
size: 13,
color: Colors.blue,
),
const SizedBox(height: 8),
Padding(
padding: const EdgeInsets.only(left: 10.0),
child: Text(
style: Theme.of(context).textTheme.bodySmall!.copyWith(fontSize: 10, fontWeight: FontWeight.w400),
'(051) 41021712',
),
),
],
),
],
),
],
),
],
),
);
}
/// Branches List
List<Branch> getBranches(String cityName) {
return [
Branch(name: 'MFSYS Technolog', latitude: 37.7749, longitude: -122.4194, contactNumber: '123-456-7890', address: "Main Branch I9/3"),
Branch(name: 'MFSYS Technolog', latitude: 37.7831, longitude: -122.4039, contactNumber: '987-654-3210', address: "Main Branch I9/3"),
Branch(name: 'MFSYS Technolog', latitude: 37.7841, longitude: -122.4539, contactNumber: '987-654-3210', address: "Main Branch I9/3"),
Branch(name: 'Branch E', latitude: 37.7867, longitude: -122.4089, contactNumber: '987-654-3210', address: "Main Branch I9/3"),
];
}
}