This commit is contained in:
Mohamed Nouffer
2022-03-14 19:38:25 +05:30
parent 5e3de63a3c
commit 9090a76cf3
5 changed files with 98 additions and 20 deletions

View File

@ -7,6 +7,7 @@ import 'package:rogapp/services/location_service.dart';
class HomeController extends GetxController {
List<GeoJsonFeatureCollection> locations = <GeoJsonFeatureCollection>[].obs;
List<GeoJsonFeature> currentFeature = <GeoJsonFeature>[].obs;
@override
@ -28,4 +29,26 @@ class HomeController extends GetxController {
}
}
void makeNext(GeoJsonFeature fs){
GeoJsonFeature<GeoJsonMultiPoint> pt = fs as GeoJsonFeature<GeoJsonMultiPoint>;
for(int i=0; i<= locations[0].collection.length - 1; i++){
GeoJsonMultiPoint p = locations[0].collection[i].geometry as GeoJsonMultiPoint;
if(p.geoSerie!.geoPoints[0].latitude == pt.geometry!.geoSerie!.geoPoints[0].latitude && p.geoSerie!.geoPoints[0].longitude == pt.geometry!.geoSerie!.geoPoints[0].longitude ){
if(currentFeature.length > 0){
currentFeature.clear();
}
if(i >= locations[0].collection.length - 1 ){
currentFeature.add(locations[0].collection[0] as GeoJsonFeature);
}
else{
currentFeature.add(locations[0].collection[i + 1] as GeoJsonFeature);
}
}
}
}
}

View File

@ -16,6 +16,13 @@ class HomePage extends GetView<HomeController> {
final HomeController homeController = Get.find<HomeController>();
void changeCurrentFeature(GeoJsonFeature fs){
if(homeController.currentFeature.length > 0){
homeController.currentFeature.clear();
}
homeController.currentFeature.add(fs);
}
Image getImage(int index){
if(homeController.locations[0].collection[index].properties!["photos"] == null || homeController.locations[0].collection[index].properties!["photos"] == ""){
return Image(image: AssetImage('assets/images/empty_image.png'));
@ -79,12 +86,11 @@ class HomePage extends GetView<HomeController> {
child: ListTile(
onTap: (){
GeoJsonFeature gf = homeController.locations[0].collection[index];
changeCurrentFeature(gf);
showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) => BottomSheetWidget(pt: gf),
builder: (context) => BottomSheetWidget(),
);
},
leading: getImage(index),

View File

@ -86,11 +86,21 @@ class MapPage extends StatelessWidget {
circleSpiralSwitchover: 12,
maxClusterRadius: 20,
rotate: true,
onMarkerTap: (marker) => showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) => BottomSheetWidget(pt: homeController.getFeatureForLatLong(marker.point.latitude, marker.point.longitude),),
),
onMarkerTap: (marker){
GeoJsonFeature? fs = homeController.getFeatureForLatLong(marker.point.latitude, marker.point.longitude);
print(fs);
if(fs != null){
if(homeController.currentFeature.length > 0) {
homeController.currentFeature.clear();
}
homeController.currentFeature.add(fs);
showModalBottomSheet(context: context, isScrollControlled: true,
builder:((context) => BottomSheetWidget())
);
}
},
size: Size(40, 40),
anchor: AnchorPos.align(AnchorAlign.center),
fitBoundsOptions: const FitBoundsOptions(

View File

@ -0,0 +1,18 @@
import 'package:geojson/geojson.dart';
import 'package:get/get_state_manager/get_state_manager.dart';
class BottomSheetController extends GetxController{
List<GeoJsonFeature>? currentFeature = <GeoJsonFeature>[];
BottomSheetController({this.currentFeature});
@override
void onInit() {
super.onInit();
}
}

View File

@ -1,12 +1,21 @@
import 'package:flutter/material.dart';
import 'package:geojson/geojson.dart';
import 'package:get/get.dart';
import 'package:rogapp/pages/home/home_controller.dart';
class BottomSheetWidget extends StatelessWidget {
//const BottomSheetWidget({ Key? key }, GeoJsonFeature? pt) : super(key: key);
GeoJsonFeature? pt;
final HomeController homeController = Get.find<HomeController>();
BottomSheetWidget({this.pt});
Image getImage(GeoJsonFeature? gf){
if(gf!.properties!["photos"] == null || gf.properties!["photos"] == ""){
return Image(image: AssetImage('assets/images/empty_image.png'));
}
else{
return Image(image: NetworkImage(gf.properties!["photos"]));
}
}
@override
Widget build(BuildContext context) {
@ -32,23 +41,35 @@ class BottomSheetWidget extends StatelessWidget {
height: 35.0,
alignment: Alignment.center,
color: Colors.black12,
child: Text(pt!.properties!["location_name"], style: TextStyle(
child: Obx(() =>
Text(homeController.currentFeature[0].properties!["location_name"], style: TextStyle(
fontSize: 18.0,
fontWeight: FontWeight.bold,
),
)
),
),
),
IconButton(
onPressed:(){
//homeController.incidents.remove(incident);
Navigator.pop(context);
//popupController.hideAllPopups();
print("next");
homeController.makeNext(homeController.currentFeature[0]);
},
icon: Icon(Icons.delete_outlined)
)
],
),
Row(
children: [
Expanded(
child: Padding(
padding: EdgeInsets.all(8.0),
child: Obx(() => getImage(homeController.currentFeature[0])),
),
),
SizedBox(width: 66.0,)
],
),
],
),
)