import 'package:flutter/material.dart'; import 'package:geojson/geojson.dart'; import 'package:get/get.dart'; import 'package:get/get_state_manager/get_state_manager.dart'; import 'package:image_picker/image_picker.dart'; import 'package:latlong2/latlong.dart'; import 'package:rogapp/model/destination.dart'; import 'package:rogapp/pages/destination/destination_controller.dart'; import 'package:rogapp/pages/index/index_controller.dart'; import 'package:rogapp/routes/app_pages.dart'; import 'package:rogapp/utils/database_helper.dart'; import 'package:rogapp/widgets/bottom_sheet_controller.dart'; import 'package:url_launcher/url_launcher.dart'; class BottomSheetNew extends GetView { BottomSheetNew({ Key? key }) : super(key: key); final IndexController indexController = Get.find(); final DestinationController destinationController = Get.find(); 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"], ), errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { return Image.asset("assets/images/empty_image.png"); }, ); } } void _launchURL(url) async { if (!await launch(url)) throw 'Could not launch $url'; } @override Widget build(BuildContext context) { return Wrap( children: [ Column( children: [ Padding( padding: const EdgeInsets.all(8.0), child: Container( child: Row( children: [ MaterialButton( onPressed: () { indexController.makePrevious(indexController.currentFeature[0]); }, color: Colors.blue, textColor: Colors.white, child: Icon( Icons.arrow_back_ios, size: 14, ), padding: EdgeInsets.all(16), shape: CircleBorder(), ), Expanded( child: Container( alignment: Alignment.center, child: Obx(() => Text(indexController.currentFeature[0].properties!["location_name"], style: TextStyle( fontSize: 15.0, fontWeight: FontWeight.bold, ), ) ), ), ), MaterialButton( onPressed: () { print("----- next is ${indexController.currentFeature[0]} ------"); indexController.makeNext(indexController.currentFeature[0]); }, color: Colors.blue, textColor: Colors.white, child: Icon( Icons.arrow_forward_ios, size: 14, ), padding: EdgeInsets.all(16), shape: CircleBorder(), ), ], ), ), ), Row( children: [ Expanded( child: SizedBox( height: 260.0, child: Obx(() => getImage(indexController.currentFeature[0])), ) ), ], ), Obx(() => (indexController.currentFeature[0].properties!["address"] as String).isNotEmpty ? getDetails("address".tr, indexController.currentFeature[0].properties!["address"] ?? '') : Container(width: 0.0, height: 0,), ), Obx(() => (indexController.currentFeature[0].properties!["phone"] as String).isNotEmpty ? getDetails("telephone".tr, indexController.currentFeature[0].properties!["phone"] ?? '') : Container(width: 0.0, height: 0,), ), Obx(() => (indexController.currentFeature[0].properties!["email"] as String).isNotEmpty ? getDetails("email".tr, indexController.currentFeature[0].properties!["email"] ?? '') : Container(width: 0.0, height: 0,), ), Obx(() => (indexController.currentFeature[0].properties!["webcontents"] as String).isNotEmpty ? getDetails("web".tr, indexController.currentFeature[0].properties!["webcontents"] ?? '', isurl: true) : Container(width: 0.0, height: 0,), ), Obx(() => (indexController.currentFeature[0].properties!["videos"] as String).isNotEmpty ? getDetails("video".tr, indexController.currentFeature[0].properties!["videos"] ?? '', isurl: true) : Container(width: 0.0, height: 0,), ), SizedBox(height: 20.0,), //Obx(() => wantToGo(context), //), SizedBox(height: 60.0,) ], ) ], ); } Widget wantToGo(BuildContext context){ return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ ElevatedButton( onPressed: (){ }, child: IconButton( icon: Icon(Icons.favorite, color: Colors.white, semanticLabel: "want_to_go".tr,), onPressed: () { GeoJsonMultiPoint mp = indexController.currentFeature[0].geometry as GeoJsonMultiPoint; LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude, mp.geoSerie!.geoPoints[0].longitude); print("--- name---- ${indexController.currentFeature[0].properties!["location_name"]} -----"); Destination dest = Destination( name: indexController.currentFeature[0].properties!["location_name"], address: indexController.currentFeature[0].properties!["address"], phone: indexController.currentFeature[0].properties!["phone"], email: indexController.currentFeature[0].properties!["email"], webcontents: indexController.currentFeature[0].properties!["webcontents"], videos: indexController.currentFeature[0].properties!["videos"], category: indexController.currentFeature[0].properties!["category"], series: 1, lat: pt.latitude, lon: pt.longitude, location_id: indexController.currentFeature[0].properties!["location_id"], list_order: 1, photos: indexController.currentFeature[0].properties!["photos"], checkin_radious: indexController.currentFeature[0].properties!["checkin_radious"], auto_checkin: indexController.currentFeature[0].properties!["auto_checkin"] == true ? 1 : 0 ); destinationController.addDestinations(dest); }, ) ), ], ) ], ); } Widget getCheckin(BuildContext context){ print("------ currentAction ----- ${indexController.currentAction}-----"); return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Flexible( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ indexController.currentAction[0][0]["checkin"] == false ? Column( children: [ Row( mainAxisSize: MainAxisSize.max, children: [ ElevatedButton( child: Text("Image"), onPressed: (){ final ImagePicker _picker = ImagePicker(); _picker.pickImage(source: ImageSource.camera).then((value){ print("----- image---- ${value!.path}"); }); }, ) ], ), ElevatedButton( onPressed: (){ if(indexController.currentAction.isNotEmpty){ print(indexController.currentAction[0]); indexController.currentAction[0][0]["checkin"] = true; Map temp = Map.from(indexController.currentAction[0][0]); indexController.currentAction.clear(); print("---temp---${temp}"); indexController.currentAction.add([temp]); } indexController.makeAction(context); }, child: Text("checkin".tr) ) ], ) : ElevatedButton( onPressed: (){ if(indexController.currentAction.isNotEmpty){ print(indexController.currentAction[0]); indexController.currentAction[0][0]["checkin"] = false; Map temp = Map.from(indexController.currentAction[0][0]); indexController.currentAction.clear(); print("---temp---${temp}"); indexController.currentAction.add([temp]); } indexController.makeAction(context); }, child: Icon( Icons.favorite, color: Colors.red) , ) ], ), ) ], ); } Widget getSingleAction(){ return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ TextButton( onPressed: (){ Get.toNamed(AppPages.LOGIN); }, child: Text("その他のオプションについてはログインしてください")) ], ) ], ); } Widget getDoubleAction(BuildContext context){ return Container( color: Colors.black12, child: Padding( padding: const EdgeInsets.symmetric(vertical:8.0), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Flexible( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ indexController.currentAction[0][0]["wanttogo"] == false ? ElevatedButton( onPressed: (){ if(indexController.currentAction.isNotEmpty){ print(indexController.currentAction[0]); indexController.currentAction[0][0]["wanttogo"] = true; Map temp = Map.from(indexController.currentAction[0][0]); indexController.currentAction.clear(); print("---temp---${temp}"); indexController.currentAction.add([temp]); } indexController.makeAction(context); }, child: Text("want_to_go".tr) ) : ElevatedButton( onPressed: (){ if(indexController.currentAction.isNotEmpty){ print(indexController.currentAction[0]); indexController.currentAction[0][0]["wanttogo"] = false; Map temp = Map.from(indexController.currentAction[0][0]); indexController.currentAction.clear(); print("---temp---${temp}"); indexController.currentAction.add([temp]); } indexController.makeAction(context); }, child: IconButton( icon: Icon(Icons.favorite, color: Colors.red, semanticLabel: "want_to_go".tr,), onPressed: () { }, ) ), ], ), ), Flexible( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ indexController.currentAction[0][0]["like"] == false ? ElevatedButton( onPressed: (){ if(indexController.currentAction.isNotEmpty){ print(indexController.currentAction[0]); indexController.currentAction[0][0]["like"] = true; Map temp = Map.from(indexController.currentAction[0][0]); indexController.currentAction.clear(); print("---temp---${temp}"); indexController.currentAction.add([temp]); } indexController.makeAction(context); }, child: Text("like".tr) ) : ElevatedButton( onPressed: (){ if(indexController.currentAction.isNotEmpty){ print(indexController.currentAction[0]); indexController.currentAction[0][0]["like"] = false; Map temp = Map.from(indexController.currentAction[0][0]); indexController.currentAction.clear(); print("---temp---${temp}"); indexController.currentAction.add([temp]); } indexController.makeAction(context); }, child: IconButton( icon: Icon(Icons.favorite, color: Colors.red, semanticLabel: "like".tr,), onPressed: () { }, ) ), ], ), ) ], ), ), ); } Widget getDetails(String label, String text, {bool isurl=false}){ return Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Flexible( flex: 1, child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Text(label), ], ), ), SizedBox(width: 10.0,), Flexible( flex: 3, child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Expanded( child: InkWell( onTap: (){ if(isurl){ _launchURL(indexController.currentFeature[0].properties!["webcontents"]); } }, child: Text(text, style: TextStyle( color: Colors.blue, ), softWrap: true, overflow: TextOverflow.fade, ), ), ), ], ), ), ], ); } }