refactoring
This commit is contained in:
@ -5,13 +5,21 @@ import 'package:google_fonts/google_fonts.dart';
|
|||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'package:rogapp/pages/index/index_binding.dart';
|
import 'package:rogapp/pages/index/index_binding.dart';
|
||||||
import 'package:rogapp/routes/app_pages.dart';
|
import 'package:rogapp/routes/app_pages.dart';
|
||||||
|
import 'package:rogapp/services/location_service.dart';
|
||||||
import 'package:rogapp/utils/string_values.dart';
|
import 'package:rogapp/utils/string_values.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
//WidgetsFlutterBinding.ensureInitialized();
|
//WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
initServices();
|
||||||
runApp(MyApp());
|
runApp(MyApp());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void initServices() async {
|
||||||
|
print('starting services ...');
|
||||||
|
await Get.putAsync(() => LocationService().init());
|
||||||
|
print('All services started...');
|
||||||
|
}
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
const MyApp({Key? key}) : super(key: key);
|
||||||
// This widget is the root of your application.
|
// This widget is the root of your application.
|
||||||
|
|||||||
@ -1,93 +1,93 @@
|
|||||||
|
|
||||||
|
|
||||||
class Destination {
|
// class Destination {
|
||||||
String? name;
|
// String? name;
|
||||||
String? address;
|
// String? address;
|
||||||
String? phone;
|
// String? phone;
|
||||||
String? email;
|
// String? email;
|
||||||
String? webcontents;
|
// String? webcontents;
|
||||||
String? videos;
|
// String? videos;
|
||||||
String? category;
|
// String? category;
|
||||||
int? series;
|
// int? series;
|
||||||
double? lat;
|
// double? lat;
|
||||||
double? lon;
|
// double? lon;
|
||||||
int? location_id;
|
// int? location_id;
|
||||||
int? list_order;
|
// int? list_order;
|
||||||
String? photos;
|
// String? photos;
|
||||||
double? checkin_radious;
|
// double? checkin_radious;
|
||||||
int? auto_checkin;
|
// int? auto_checkin;
|
||||||
bool? selected = false;
|
// bool? selected = false;
|
||||||
bool? checkedin = false;
|
// bool? checkedin = false;
|
||||||
|
|
||||||
Destination({
|
// Destination({
|
||||||
this.name,
|
// this.name,
|
||||||
this.address,
|
// this.address,
|
||||||
this.phone,
|
// this.phone,
|
||||||
this.email,
|
// this.email,
|
||||||
this.webcontents,
|
// this.webcontents,
|
||||||
this.videos,
|
// this.videos,
|
||||||
this.category,
|
// this.category,
|
||||||
this.series,
|
// this.series,
|
||||||
this.lat,
|
// this.lat,
|
||||||
this.lon,
|
// this.lon,
|
||||||
this.location_id,
|
// this.location_id,
|
||||||
this.list_order,
|
// this.list_order,
|
||||||
this.photos,
|
// this.photos,
|
||||||
this.checkin_radious,
|
// this.checkin_radious,
|
||||||
this.auto_checkin,
|
// this.auto_checkin,
|
||||||
this.selected,
|
// this.selected,
|
||||||
this.checkedin
|
// this.checkedin
|
||||||
});
|
// });
|
||||||
|
|
||||||
factory Destination.fromMap(Map<String, dynamic> json) {
|
// factory Destination.fromMap(Map<String, dynamic> json) {
|
||||||
|
|
||||||
bool selec = json['selected'] == 0 ? false : true;
|
// bool selec = json['selected'] == 0 ? false : true;
|
||||||
bool checkin = json['checkedin'] == 0 ? false : true;
|
// bool checkin = json['checkedin'] == 0 ? false : true;
|
||||||
|
|
||||||
return Destination(
|
// return Destination(
|
||||||
name: json['name'],
|
// name: json['name'],
|
||||||
address: json['address'],
|
// address: json['address'],
|
||||||
phone: json['phone'],
|
// phone: json['phone'],
|
||||||
email: json['email'],
|
// email: json['email'],
|
||||||
webcontents: json['webcontents'],
|
// webcontents: json['webcontents'],
|
||||||
videos: json['videos'],
|
// videos: json['videos'],
|
||||||
category: json['category'],
|
// category: json['category'],
|
||||||
series: json['series'],
|
// series: json['series'],
|
||||||
lat: json['lat'],
|
// lat: json['lat'],
|
||||||
lon: json['lon'],
|
// lon: json['lon'],
|
||||||
location_id: json['location_id'],
|
// location_id: json['location_id'],
|
||||||
list_order: json['list_order'],
|
// list_order: json['list_order'],
|
||||||
photos: json['photos'],
|
// photos: json['photos'],
|
||||||
checkin_radious: json['checkin_radious'],
|
// checkin_radious: json['checkin_radious'],
|
||||||
auto_checkin:json['auto_checkin'],
|
// auto_checkin:json['auto_checkin'],
|
||||||
selected: selec,
|
// selected: selec,
|
||||||
checkedin: checkin
|
// checkedin: checkin
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
Map<String, dynamic> toMap(){
|
// Map<String, dynamic> toMap(){
|
||||||
int sel = selected == false ? 0 : 1;
|
// int sel = selected == false ? 0 : 1;
|
||||||
int check = checkedin == false ? 0 : 1;
|
// int check = checkedin == false ? 0 : 1;
|
||||||
return {
|
// return {
|
||||||
'name':name,
|
// 'name':name,
|
||||||
'address': address,
|
// 'address': address,
|
||||||
'phone': phone,
|
// 'phone': phone,
|
||||||
'email': email,
|
// 'email': email,
|
||||||
'webcontents': webcontents,
|
// 'webcontents': webcontents,
|
||||||
'videos': videos,
|
// 'videos': videos,
|
||||||
'category':category,
|
// 'category':category,
|
||||||
'series':series,
|
// 'series':series,
|
||||||
'lat':lat,
|
// 'lat':lat,
|
||||||
'lon':lon,
|
// 'lon':lon,
|
||||||
'location_id':location_id,
|
// 'location_id':location_id,
|
||||||
'list_order':list_order,
|
// 'list_order':list_order,
|
||||||
'photos':photos,
|
// 'photos':photos,
|
||||||
'checkin_radious': checkin_radious,
|
// 'checkin_radious': checkin_radious,
|
||||||
'auto_checkin': auto_checkin,
|
// 'auto_checkin': auto_checkin,
|
||||||
'selected': sel,
|
// 'selected': sel,
|
||||||
'checkedin': check
|
// 'checkedin': check
|
||||||
};
|
// };
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
307
lib/model/location.dart
Normal file
307
lib/model/location.dart
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
|
||||||
|
|
||||||
|
import 'package:geojson_vi/geojson_vi.dart';
|
||||||
|
import 'package:latlong2/latlong.dart';
|
||||||
|
|
||||||
|
class Location {
|
||||||
|
int? location_id;
|
||||||
|
String? location_name;
|
||||||
|
String? category;
|
||||||
|
String? zip;
|
||||||
|
String? address;
|
||||||
|
String? prefecture;
|
||||||
|
String? area;
|
||||||
|
String? city;
|
||||||
|
double? latitude;
|
||||||
|
double? longitude;
|
||||||
|
String? photos;
|
||||||
|
String? videos;
|
||||||
|
String? webcontents;
|
||||||
|
String? status;
|
||||||
|
String? portal;
|
||||||
|
String? group;
|
||||||
|
String? phone;
|
||||||
|
String? fax;
|
||||||
|
String? email;
|
||||||
|
String? facility;
|
||||||
|
String? remark;
|
||||||
|
String? tags;
|
||||||
|
String? event_name;
|
||||||
|
bool? event_active;
|
||||||
|
bool? hidden_location;
|
||||||
|
bool? auto_checkin;
|
||||||
|
int? checkin_radius;
|
||||||
|
int? checkin_point;
|
||||||
|
int? buy_point;
|
||||||
|
String? evaluation_value;
|
||||||
|
bool? shop_closed;
|
||||||
|
bool? shop_shutdown;
|
||||||
|
String? opening_hours_mon;
|
||||||
|
String? opening_hours_tue;
|
||||||
|
String? opening_hours_wed;
|
||||||
|
String? opening_hours_thu;
|
||||||
|
String? opening_hours_fri;
|
||||||
|
String? opening_hours_sat;
|
||||||
|
String? opening_hours_sun;
|
||||||
|
String? parammeters;
|
||||||
|
DateTime? created_at;
|
||||||
|
LatLng? geometry;
|
||||||
|
GeoJSONGeometry? multipoint;
|
||||||
|
|
||||||
|
Location({
|
||||||
|
this.location_id,
|
||||||
|
this.location_name,
|
||||||
|
this.category,
|
||||||
|
this.zip,
|
||||||
|
this.address,
|
||||||
|
this.prefecture,
|
||||||
|
this.area,
|
||||||
|
this.city,
|
||||||
|
this.latitude,
|
||||||
|
this.longitude,
|
||||||
|
this.photos,
|
||||||
|
this.videos,
|
||||||
|
this.webcontents,
|
||||||
|
this.status,
|
||||||
|
this.portal,
|
||||||
|
this.group,
|
||||||
|
this.phone,
|
||||||
|
this.fax,
|
||||||
|
this.email,
|
||||||
|
this.facility,
|
||||||
|
this.remark,
|
||||||
|
this.tags,
|
||||||
|
this.event_name,
|
||||||
|
this.event_active,
|
||||||
|
this.hidden_location,
|
||||||
|
this.auto_checkin,
|
||||||
|
this.checkin_radius,
|
||||||
|
this.checkin_point,
|
||||||
|
this.buy_point,
|
||||||
|
this.evaluation_value,
|
||||||
|
this.shop_closed,
|
||||||
|
this.shop_shutdown,
|
||||||
|
this.opening_hours_mon,
|
||||||
|
this.opening_hours_tue,
|
||||||
|
this.opening_hours_wed,
|
||||||
|
this.opening_hours_thu,
|
||||||
|
this.opening_hours_fri,
|
||||||
|
this.opening_hours_sat,
|
||||||
|
this.opening_hours_sun,
|
||||||
|
this.parammeters,
|
||||||
|
this.created_at,
|
||||||
|
this.geometry,
|
||||||
|
this.multipoint,
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
factory Location.fromMap(Map<String, dynamic> json){
|
||||||
|
bool is_event_active = json['event_active'] == 0 ? false : true;
|
||||||
|
bool is_hidden_location = json['hidden_location'] == 0 ? false : true;
|
||||||
|
bool is_auto_checkin = json['auto_checkin'] == 0 ? false : true;
|
||||||
|
bool is_shop_closed = json['shop_closed'] == 0 ? false : true;
|
||||||
|
bool is_shop_shutdown = json['shop_shutdown'] == 0 ? false : true;
|
||||||
|
|
||||||
|
return Location(
|
||||||
|
location_id: json['location_id'],
|
||||||
|
location_name: json['location_name'],
|
||||||
|
category: json['category'],
|
||||||
|
zip: json['zip'],
|
||||||
|
address: json['address'],
|
||||||
|
prefecture: json['prefecture'],
|
||||||
|
area: json['area'],
|
||||||
|
city: json['city'],
|
||||||
|
latitude: json['latitude'],
|
||||||
|
longitude: json['longitude'],
|
||||||
|
photos: json['photos'],
|
||||||
|
videos: json['videos'],
|
||||||
|
webcontents: json['webcontents'],
|
||||||
|
status: json['status'],
|
||||||
|
portal: json['portal'],
|
||||||
|
group: json['group'],
|
||||||
|
phone: json['phone'],
|
||||||
|
fax: json['fax'],
|
||||||
|
email: json['email'],
|
||||||
|
facility: json['facility'],
|
||||||
|
remark: json['remark'],
|
||||||
|
tags: json['tags'],
|
||||||
|
event_name: json['event_name'],
|
||||||
|
event_active: is_event_active,
|
||||||
|
hidden_location: is_hidden_location,
|
||||||
|
auto_checkin: is_auto_checkin,
|
||||||
|
checkin_radius: json['checkin_radius'],
|
||||||
|
checkin_point: json['checkin_point'],
|
||||||
|
buy_point: json['buy_point'],
|
||||||
|
evaluation_value: json['evaluation_value'],
|
||||||
|
shop_closed: is_shop_closed,
|
||||||
|
shop_shutdown: is_shop_shutdown,
|
||||||
|
opening_hours_mon: json['opening_hours_mon'],
|
||||||
|
opening_hours_tue: json['opening_hours_tue'],
|
||||||
|
opening_hours_wed: json['opening_hours_wed'],
|
||||||
|
opening_hours_thu: json['opening_hours_thu'],
|
||||||
|
opening_hours_fri: json['opening_hours_fri'],
|
||||||
|
opening_hours_sat: json['opening_hours_sat'],
|
||||||
|
opening_hours_sun: json['opening_hours_sun'],
|
||||||
|
parammeters: json['parammeters']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
factory Location.fromGeoJSONFeture(GeoJSONFeature feature){
|
||||||
|
|
||||||
|
GeoJSONMultiPoint geom = feature.geometry as GeoJSONMultiPoint;
|
||||||
|
LatLng geomVal = LatLng(geom.coordinates[0][1], geom.coordinates[0][0]);
|
||||||
|
|
||||||
|
return Location(
|
||||||
|
location_id: feature.properties!["location_id"],
|
||||||
|
location_name: feature.properties!["location_name"],
|
||||||
|
category: feature.properties!["category"],
|
||||||
|
zip: feature.properties!["zip"],
|
||||||
|
address: feature.properties!["address"],
|
||||||
|
prefecture: feature.properties!["prefecture"],
|
||||||
|
area: feature.properties!["area"],
|
||||||
|
city: feature.properties!["city"],
|
||||||
|
latitude: feature.properties!["latitude"],
|
||||||
|
longitude: feature.properties!["longitude"],
|
||||||
|
phone: feature.properties!["phone"],
|
||||||
|
videos: feature.properties!["videos"],
|
||||||
|
webcontents: feature.properties!["webcontents"],
|
||||||
|
status: feature.properties!["status"],
|
||||||
|
portal: feature.properties!["portal"],
|
||||||
|
group: feature.properties!["group"],
|
||||||
|
photos: feature.properties!["photos"],
|
||||||
|
fax: feature.properties!["fax"],
|
||||||
|
email: feature.properties!["email"],
|
||||||
|
facility: feature.properties!["facility"],
|
||||||
|
remark: feature.properties!["remark"],
|
||||||
|
tags: feature.properties!["tags"],
|
||||||
|
event_name: feature.properties!["event_name"],
|
||||||
|
event_active: feature.properties!["event_active"],
|
||||||
|
hidden_location: feature.properties!["hidden_location"],
|
||||||
|
auto_checkin: feature.properties!["auto_checkin"],
|
||||||
|
checkin_radius: feature.properties!["checkin_radius"],
|
||||||
|
checkin_point: feature.properties!["checkin_point"],
|
||||||
|
buy_point: feature.properties!["buy_point"],
|
||||||
|
evaluation_value: feature.properties!["evaluation_value"],
|
||||||
|
shop_closed: feature.properties!["shop_closed"],
|
||||||
|
shop_shutdown: feature.properties!["shop_shutdown"],
|
||||||
|
opening_hours_mon: feature.properties!["opening_hours_mon"],
|
||||||
|
opening_hours_tue: feature.properties!["opening_hours_tue"],
|
||||||
|
opening_hours_wed: feature.properties!["opening_hours_wed"],
|
||||||
|
opening_hours_thu: feature.properties!["opening_hours_thu"],
|
||||||
|
opening_hours_fri: feature.properties!["opening_hours_fri"],
|
||||||
|
opening_hours_sat: feature.properties!["opening_hours_sat"],
|
||||||
|
opening_hours_sun: feature.properties!["opening_hours_sun"],
|
||||||
|
parammeters: feature.properties!["parammeters"],
|
||||||
|
created_at: DateTime.parse(feature.properties!["created_at"]),
|
||||||
|
geometry: geomVal,
|
||||||
|
multipoint: feature.geometry
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toMap(){
|
||||||
|
int is_active = event_active == false ? 0 : 1;
|
||||||
|
int is_hidden = hidden_location == false ? 0 : 1;
|
||||||
|
int is_auto = auto_checkin == false ? 0 : 1;
|
||||||
|
int is_closed = shop_closed == false ? 0 : 1;
|
||||||
|
int is_shuldown = shop_shutdown == false ? 0 : 1;
|
||||||
|
|
||||||
|
return {
|
||||||
|
'location_id': location_id,
|
||||||
|
'location_name': location_name,
|
||||||
|
'category': category,
|
||||||
|
'zip': zip,
|
||||||
|
'address': address,
|
||||||
|
'prefecture': prefecture,
|
||||||
|
'area': area,
|
||||||
|
'city': city,
|
||||||
|
'latitude': latitude,
|
||||||
|
'longitude': longitude,
|
||||||
|
'phone': phone,
|
||||||
|
'videos': videos,
|
||||||
|
'webcontents': webcontents,
|
||||||
|
'status': status,
|
||||||
|
'portal': portal,
|
||||||
|
'group': group,
|
||||||
|
'photos':photos,
|
||||||
|
'fax': fax,
|
||||||
|
'email': email,
|
||||||
|
'facility': facility,
|
||||||
|
'remark': remark,
|
||||||
|
'tags': tags,
|
||||||
|
'event_name': event_name,
|
||||||
|
'event_active': event_active,
|
||||||
|
'hidden_location': hidden_location,
|
||||||
|
'auto_checkin': auto_checkin,
|
||||||
|
'checkin_radius': checkin_radius,
|
||||||
|
'checkin_point': checkin_point,
|
||||||
|
'buy_point': buy_point,
|
||||||
|
'evaluation_value': evaluation_value,
|
||||||
|
'shop_closed': shop_closed,
|
||||||
|
'shop_shutdown': shop_shutdown,
|
||||||
|
'opening_hours_mon': opening_hours_mon,
|
||||||
|
'opening_hours_tue': opening_hours_tue,
|
||||||
|
'opening_hours_wed': opening_hours_wed,
|
||||||
|
'opening_hours_thu': opening_hours_thu,
|
||||||
|
'opening_hours_fri': opening_hours_fri,
|
||||||
|
'opening_hours_sat': opening_hours_sat,
|
||||||
|
'opening_hours_sun': opening_hours_sun,
|
||||||
|
'parammeters': parammeters
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GeoJSONFeature toGeoFeature(){
|
||||||
|
|
||||||
|
GeoJSONMultiPoint geom = multipoint as GeoJSONMultiPoint;
|
||||||
|
|
||||||
|
return GeoJSONFeature(
|
||||||
|
geom,
|
||||||
|
properties: {
|
||||||
|
'location_id': location_id,
|
||||||
|
'location_name': location_name,
|
||||||
|
'category': category,
|
||||||
|
'zip': zip,
|
||||||
|
'address': address,
|
||||||
|
'prefecture': prefecture,
|
||||||
|
'area': area,
|
||||||
|
'city': city,
|
||||||
|
'latitude': latitude,
|
||||||
|
'longitude': longitude,
|
||||||
|
'phone': phone,
|
||||||
|
'videos': videos,
|
||||||
|
'webcontents': webcontents,
|
||||||
|
'status': status,
|
||||||
|
'portal': portal,
|
||||||
|
'group': group,
|
||||||
|
'photos':photos,
|
||||||
|
'fax': fax,
|
||||||
|
'email': email,
|
||||||
|
'facility': facility,
|
||||||
|
'remark': remark,
|
||||||
|
'tags': tags,
|
||||||
|
'event_name': event_name,
|
||||||
|
'event_active': event_active,
|
||||||
|
'hidden_location': hidden_location,
|
||||||
|
'auto_checkin': auto_checkin,
|
||||||
|
'checkin_radius': checkin_radius,
|
||||||
|
'checkin_point': checkin_point,
|
||||||
|
'buy_point': buy_point,
|
||||||
|
'evaluation_value': evaluation_value,
|
||||||
|
'shop_closed': shop_closed,
|
||||||
|
'shop_shutdown': shop_shutdown,
|
||||||
|
'opening_hours_mon': opening_hours_mon,
|
||||||
|
'opening_hours_tue': opening_hours_tue,
|
||||||
|
'opening_hours_wed': opening_hours_wed,
|
||||||
|
'opening_hours_thu': opening_hours_thu,
|
||||||
|
'opening_hours_fri': opening_hours_fri,
|
||||||
|
'opening_hours_sat': opening_hours_sat,
|
||||||
|
'opening_hours_sun': opening_hours_sun,
|
||||||
|
'parammeters': parammeters,
|
||||||
|
'created_at': created_at,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,14 +1,11 @@
|
|||||||
|
|
||||||
|
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:geojson/geojson.dart';
|
|
||||||
import 'package:geolocator/geolocator.dart';
|
import 'package:geolocator/geolocator.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:latlong2/latlong.dart';
|
import 'package:latlong2/latlong.dart';
|
||||||
import 'package:rogapp/model/destination.dart';
|
import 'package:rogapp/model/destination.dart';
|
||||||
|
import 'package:rogapp/model/location.dart';
|
||||||
import 'package:rogapp/pages/index/index_controller.dart';
|
import 'package:rogapp/pages/index/index_controller.dart';
|
||||||
import 'package:rogapp/routes/app_pages.dart';
|
import 'package:rogapp/routes/app_pages.dart';
|
||||||
import 'package:rogapp/services/destination_service.dart';
|
import 'package:rogapp/services/destination_service.dart';
|
||||||
@ -24,10 +21,10 @@ class DestinationController extends GetxController {
|
|||||||
late LocationSettings locationSettings;
|
late LocationSettings locationSettings;
|
||||||
|
|
||||||
var destinationCount = 0.obs;
|
var destinationCount = 0.obs;
|
||||||
List<Destination> destinations = <Destination>[].obs;
|
List<Location> destinations = <Location>[].obs;
|
||||||
List<Map<String, dynamic>> destination_index_data = <Map<String, dynamic>>[].obs;
|
List<Map<String, dynamic>> destination_index_data = <Map<String, dynamic>>[].obs;
|
||||||
|
|
||||||
List<Destination> currentSelectedDestinations = <Destination>[].obs;
|
List<Location> currentSelectedDestinations = <Location>[].obs;
|
||||||
|
|
||||||
bool checking_in = false;
|
bool checking_in = false;
|
||||||
List<bool> isSelected = [true].obs;
|
List<bool> isSelected = [true].obs;
|
||||||
@ -42,23 +39,12 @@ class DestinationController extends GetxController {
|
|||||||
final IndexController indexController = Get.find<IndexController>();
|
final IndexController indexController = Get.find<IndexController>();
|
||||||
|
|
||||||
|
|
||||||
Future<Destination?> getDEstinationForLatLong(double lat, double long)async {
|
Future<Location?> getDEstinationForLatLong(double lat, double long)async {
|
||||||
|
|
||||||
String jjjj = '{"id":1,"type":"Feature","geometry":{"type":"MultiPoint","coordinates":[[136.731357,35.370094]]},"properties":{"location_id":915101,"location_name":"柳津","category":"買い物","zip":"〒501-6100","address":"柳津町字仙右城7696-1"}}';
|
String jjjj = '{"id":1,"type":"Feature","geometry":{"type":"MultiPoint","coordinates":[[136.731357,35.370094]]},"properties":{"location_id":915101,"location_name":"柳津","category":"買い物","zip":"〒501-6100","address":"柳津町字仙右城7696-1"}}';
|
||||||
|
|
||||||
for(final d in destinations){
|
for(final d in destinations){
|
||||||
// var geom = d["location"]["geometry"];
|
if(lat == d.latitude && long == d.longitude){
|
||||||
// var props = d["location"]["properties"];
|
|
||||||
// print("--props- ${d["location"]["geometry"]["coordinates"][0][1]}");
|
|
||||||
// List<dynamic> geom_multi = [geom];
|
|
||||||
// Map<String, dynamic> final_geom = {"features":[{"id":d["id"],"type":"Feature", "geometry": geom, "properties": props}]};
|
|
||||||
// //print("----- geom : ${final_geom}");
|
|
||||||
|
|
||||||
// String js = json.encode(final_geom);
|
|
||||||
// //print("---features-- ${js}-----");
|
|
||||||
// GeoJsonFeatureCollection features = await featuresFromGeoJson(js);
|
|
||||||
// GeoJsonMultiPoint p = features.collection[0].geometry as GeoJsonMultiPoint;
|
|
||||||
if(lat == d.lat && long == d.lon){
|
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,56 +57,22 @@ class DestinationController extends GetxController {
|
|||||||
if(!checking_in)
|
if(!checking_in)
|
||||||
{
|
{
|
||||||
checking_in = true;
|
checking_in = true;
|
||||||
double lat = d.lat!;
|
double lat = d.latitude!;
|
||||||
double lon = d.lon!;
|
double lon = d.longitude!;
|
||||||
LatLng p = LatLng(lat, lon);
|
|
||||||
getDEstinationForLatLong(lat, lon).then((value){
|
getDEstinationForLatLong(lat, lon).then((value){
|
||||||
var distance = Distance();
|
var distance = Distance();
|
||||||
double dist = distance.as(LengthUnit.Meter, LatLng(lat, lon), LatLng(la, ln));
|
double dist = distance.as(LengthUnit.Meter, LatLng(lat, lon), LatLng(la, ln));
|
||||||
double rad = value!.checkin_radious ?? double.infinity;
|
int rad = value!.checkin_radius! ?? 1000000;
|
||||||
bool auto_checkin = value.auto_checkin == 0 ? false : true;
|
bool auto_checkin = value.auto_checkin == 0 ? false : true;
|
||||||
|
|
||||||
indexController.currentDestinationFeature.add(value);
|
indexController.currentDestinationFeature.add(value);
|
||||||
//indexController.getAction();
|
|
||||||
|
|
||||||
|
|
||||||
if(rad >= dist){
|
if(rad >= dist){
|
||||||
if(auto_checkin){
|
if(auto_checkin){
|
||||||
makeCheckin(value, true);
|
makeCheckin(value, true);
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
// showModalBottomSheet(context: Get.context!, isScrollControlled: true,
|
|
||||||
// builder:((context) => BottomSheetWidget())
|
|
||||||
// ).whenComplete((){
|
|
||||||
// checking_in = false;
|
|
||||||
// });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// if(!checking_in){
|
|
||||||
// checking_in = true;
|
|
||||||
// if(rad >= dist){
|
|
||||||
// if(auto_checkin){
|
|
||||||
// if(indexController.currentAction.isNotEmpty){
|
|
||||||
// print(indexController.currentAction[0]);
|
|
||||||
// indexController.currentAction[0][0]["checkin"] = true;
|
|
||||||
// Map<String,dynamic> temp = Map<String,dynamic>.from(indexController.currentAction[0][0]);
|
|
||||||
// indexController.currentAction.clear();
|
|
||||||
// print("---temp---${temp}");
|
|
||||||
// indexController.currentAction.add([temp]);
|
|
||||||
// }
|
|
||||||
// indexController.makeAction(Get.context!);
|
|
||||||
// }
|
|
||||||
// else{
|
|
||||||
// showModalBottomSheet(context: Get.context!, isScrollControlled: true,
|
|
||||||
// builder:((context) => BottomSheetWidget())
|
|
||||||
// ).whenComplete((){
|
|
||||||
// checking_in = false;
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -128,12 +80,12 @@ class DestinationController extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void makeCheckin(Destination destination, bool action) async {
|
void makeCheckin(Location destination, bool action) async {
|
||||||
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ressssss ${action}@@@@@@@@@@@");
|
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ressssss ${action}@@@@@@@@@@@");
|
||||||
DatabaseHelper db = DatabaseHelper.instance;
|
DatabaseHelper db = DatabaseHelper.instance;
|
||||||
int res = await db.updateAction(destination, action);
|
int res = await db.updateAction(destination, action);
|
||||||
|
|
||||||
List<Destination> ddd = await db.getDestinationByLatLon(destination.lat!, destination.lon!);
|
List<Location> ddd = await db.getDestinationByLatLon(destination.lat!, destination.lon!);
|
||||||
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ddddd ${ddd[0].checkedin} @@@@@@@@@@@");
|
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ddddd ${ddd[0].checkedin} @@@@@@@@@@@");
|
||||||
|
|
||||||
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ressssss ${res}@@@@@@@@@@@");
|
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ressssss ${res}@@@@@@@@@@@");
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import 'package:flutter_map/plugin_api.dart';
|
|||||||
import 'package:flutter_map_location_marker/flutter_map_location_marker.dart';
|
import 'package:flutter_map_location_marker/flutter_map_location_marker.dart';
|
||||||
import 'package:flutter_map_marker_popup/flutter_map_marker_popup.dart';
|
import 'package:flutter_map_marker_popup/flutter_map_marker_popup.dart';
|
||||||
import 'package:flutter_polyline_points/flutter_polyline_points.dart';
|
import 'package:flutter_polyline_points/flutter_polyline_points.dart';
|
||||||
import 'package:geojson/geojson.dart';
|
|
||||||
import 'package:geolocator/geolocator.dart';
|
import 'package:geolocator/geolocator.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:latlong2/latlong.dart';
|
import 'package:latlong2/latlong.dart';
|
||||||
|
|||||||
@ -4,10 +4,10 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_map/flutter_map.dart';
|
import 'package:flutter_map/flutter_map.dart';
|
||||||
import 'package:flutter_map/plugin_api.dart';
|
import 'package:flutter_map/plugin_api.dart';
|
||||||
import 'package:flutter_polyline_points/flutter_polyline_points.dart';
|
import 'package:flutter_polyline_points/flutter_polyline_points.dart';
|
||||||
import 'package:geojson/geojson.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:latlong2/latlong.dart';
|
import 'package:latlong2/latlong.dart';
|
||||||
import 'package:rogapp/model/destination.dart';
|
import 'package:rogapp/model/destination.dart';
|
||||||
|
import 'package:rogapp/model/location.dart';
|
||||||
import 'package:rogapp/pages/destination/destination_binding.dart';
|
import 'package:rogapp/pages/destination/destination_binding.dart';
|
||||||
import 'package:rogapp/pages/destination/destination_controller.dart';
|
import 'package:rogapp/pages/destination/destination_controller.dart';
|
||||||
import 'package:rogapp/pages/destination/destination_page.dart';
|
import 'package:rogapp/pages/destination/destination_page.dart';
|
||||||
@ -21,9 +21,9 @@ import 'package:rogapp/services/perfecture_service.dart';
|
|||||||
import 'package:rogapp/utils/database_helper.dart';
|
import 'package:rogapp/utils/database_helper.dart';
|
||||||
|
|
||||||
class IndexController extends GetxController {
|
class IndexController extends GetxController {
|
||||||
List<GeoJsonFeatureCollection> locations = <GeoJsonFeatureCollection>[].obs;
|
List<Location> locations = <Location>[].obs;
|
||||||
List<GeoJsonFeature> currentFeature = <GeoJsonFeature>[].obs;
|
List<Location> currentFeature = <Location>[].obs;
|
||||||
List<Destination> currentDestinationFeature = <Destination>[].obs;
|
List<Location> currentDestinationFeature = <Location>[].obs;
|
||||||
List<dynamic> perfectures = <dynamic>[].obs;
|
List<dynamic> perfectures = <dynamic>[].obs;
|
||||||
List<LatLngBounds> currentBound = <LatLngBounds>[].obs;
|
List<LatLngBounds> currentBound = <LatLngBounds>[].obs;
|
||||||
List<dynamic> subPerfs = <dynamic>[].obs;
|
List<dynamic> subPerfs = <dynamic>[].obs;
|
||||||
@ -62,6 +62,10 @@ class IndexController extends GetxController {
|
|||||||
String areaDropdownValue = "-1";
|
String areaDropdownValue = "-1";
|
||||||
String cateogory = "-all-";
|
String cateogory = "-all-";
|
||||||
|
|
||||||
|
|
||||||
|
LocationService locationService = Get.find<LocationService>();
|
||||||
|
|
||||||
|
|
||||||
late Worker _ever;
|
late Worker _ever;
|
||||||
|
|
||||||
void toggleMode(){
|
void toggleMode(){
|
||||||
@ -154,10 +158,10 @@ LatLngBounds boundsFromLatLngList(List<LatLng> list) {
|
|||||||
|
|
||||||
List<LatLng> getLocationsList(){
|
List<LatLng> getLocationsList(){
|
||||||
List<LatLng> locs = [];
|
List<LatLng> locs = [];
|
||||||
for(int i=0; i<= locations[0].collection.length - 1; i++){
|
for(int i=0; i<= locations.length - 1; i++){
|
||||||
GeoJsonMultiPoint p = locations[0].collection[i].geometry as GeoJsonMultiPoint;
|
Location p = locations[i];
|
||||||
|
|
||||||
LatLng latLng = LatLng(p.geoSerie!.geoPoints[0].latitude, p.geoSerie!.geoPoints[0].longitude);
|
LatLng latLng = LatLng(p.latitude!, p.longitude!);
|
||||||
locs.add(latLng);
|
locs.add(latLng);
|
||||||
}
|
}
|
||||||
return locs;
|
return locs;
|
||||||
@ -172,9 +176,6 @@ void login(String email, String password, BuildContext context){
|
|||||||
is_loading.value = false;
|
is_loading.value = false;
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
loadUserDetails();
|
loadUserDetails();
|
||||||
if(currentFeature.isNotEmpty){
|
|
||||||
getAction();
|
|
||||||
}
|
|
||||||
if(rog_mode.value == 1){
|
if(rog_mode.value == 1){
|
||||||
switchPage(AppPages.TRAVEL);
|
switchPage(AppPages.TRAVEL);
|
||||||
}
|
}
|
||||||
@ -222,18 +223,6 @@ void login(String email, String password, BuildContext context){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void makeAction(BuildContext context){
|
|
||||||
int user_id = currentUser[0]["user"]["id"] as int;
|
|
||||||
int location_id = currentFeature[0].properties!["location_id"] as int;
|
|
||||||
bool wanttogo = currentAction[0][0]["wanttogo"];
|
|
||||||
bool like = currentAction[0][0]["like"];
|
|
||||||
bool checkin = currentAction[0][0]["checkin"];
|
|
||||||
if(user_id > 0){
|
|
||||||
ActionService.makeAction(user_id, location_id, wanttogo, like, checkin).then((value){
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void loadCatsv2(){
|
void loadCatsv2(){
|
||||||
@ -272,22 +261,6 @@ void login(String email, String password, BuildContext context){
|
|||||||
|
|
||||||
void refreshLocationForCat(){
|
void refreshLocationForCat(){
|
||||||
loadLocationsBound();
|
loadLocationsBound();
|
||||||
// if(subDropdownValue == "-1"){
|
|
||||||
// LocationService.loadLocationsFor(dropdownValue, currentCat[0]).then((value){
|
|
||||||
// locations.clear();
|
|
||||||
// locations.add(value!);
|
|
||||||
// is_loading.value = false;
|
|
||||||
// });
|
|
||||||
// print("loading main------");
|
|
||||||
// }
|
|
||||||
// else{
|
|
||||||
// LocationService.loadLocationsSubFor(subDropdownValue, currentCat[0]).then((value){
|
|
||||||
// locations.clear();
|
|
||||||
// locations.add(value!);
|
|
||||||
// is_loading.value = false;
|
|
||||||
// });
|
|
||||||
// print("loading sub------");
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadAreaFor(String perf){
|
void loadAreaFor(String perf){
|
||||||
@ -349,11 +322,6 @@ void login(String email, String password, BuildContext context){
|
|||||||
void loadLocationforPerf(String perf, MapController mapController) async {
|
void loadLocationforPerf(String perf, MapController mapController) async {
|
||||||
String cat = currentCat.isNotEmpty == true ? currentCat[0] : "";
|
String cat = currentCat.isNotEmpty == true ? currentCat[0] : "";
|
||||||
print(currentCat);
|
print(currentCat);
|
||||||
// LocationService.loadLocationsFor(perf, cat).then((value){
|
|
||||||
// locations.clear();
|
|
||||||
// locations.add(value!);
|
|
||||||
// mapController.fitBounds(currentBound[0]);
|
|
||||||
// });
|
|
||||||
locations.clear();
|
locations.clear();
|
||||||
mapController.fitBounds(currentBound[0]);
|
mapController.fitBounds(currentBound[0]);
|
||||||
}
|
}
|
||||||
@ -363,18 +331,18 @@ void login(String email, String password, BuildContext context){
|
|||||||
if(currentCat[0] == "-all-"){
|
if(currentCat[0] == "-all-"){
|
||||||
cat = "";
|
cat = "";
|
||||||
}
|
}
|
||||||
LocationService.loadLocationsSubFor(subperf, cat).then((value){
|
locationService.loadLocationsSubFor(subperf, cat).then((value){
|
||||||
locations.clear();
|
locations.clear();
|
||||||
locations.add(value!);
|
locations.addAll(value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadCustomLocation(String customarea) async {
|
void loadCustomLocation(String customarea) async {
|
||||||
String cat = currentCat.isNotEmpty == true ? currentCat[0] : "";
|
String cat = currentCat.isNotEmpty == true ? currentCat[0] : "";
|
||||||
print("----- ${customarea}");
|
print("----- ${customarea}");
|
||||||
LocationService.loadCustomLocations(customarea, cat).then((value){
|
locationService.loadCustomLocations(customarea, cat).then((value){
|
||||||
locations.clear();
|
locations.clear();
|
||||||
locations.add(value!);
|
locations.addAll(value);
|
||||||
List<LatLng> locs = getLocationsList();
|
List<LatLng> locs = getLocationsList();
|
||||||
LatLngBounds bounds = boundsFromLatLngList(locs);
|
LatLngBounds bounds = boundsFromLatLngList(locs);
|
||||||
mapController!.fitBounds(bounds);
|
mapController!.fitBounds(bounds);
|
||||||
@ -396,13 +364,13 @@ void login(String email, String password, BuildContext context){
|
|||||||
currentBound.add(bounds);
|
currentBound.add(bounds);
|
||||||
//print(currentCat);
|
//print(currentCat);
|
||||||
if(bounds.southEast != null && bounds.southWest != null && bounds.northEast != null && bounds.southEast != null ){
|
if(bounds.southEast != null && bounds.southWest != null && bounds.northEast != null && bounds.southEast != null ){
|
||||||
LocationService.loadLocationsBound(bounds.southWest!.latitude, bounds.southWest!.longitude, bounds.northWest.latitude, bounds.northWest.longitude, bounds.northEast!.latitude, bounds.northEast!.longitude, bounds.southEast.latitude, bounds.southEast.longitude, cat).then((value){
|
locationService.loadLocationsBound(bounds.southWest!.latitude, bounds.southWest!.longitude, bounds.northWest.latitude, bounds.northWest.longitude, bounds.northEast!.latitude, bounds.northEast!.longitude, bounds.southEast.latitude, bounds.southEast.longitude, cat).then((value){
|
||||||
//print("---value length ------ ${value!.collection.length}");
|
//print("---value length ------ ${value!.collection.length}");
|
||||||
if(value == null){
|
if(value == null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
locations.clear();
|
locations.clear();
|
||||||
if(value != null && value.collection.isEmpty){
|
if(value != null && value.isEmpty){
|
||||||
if(showPopup == false) {
|
if(showPopup == false) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -418,9 +386,9 @@ void login(String email, String password, BuildContext context){
|
|||||||
showPopup = false;
|
showPopup = false;
|
||||||
//Get.showSnackbar(GetSnackBar(message: "Too many points, please zoom in",));
|
//Get.showSnackbar(GetSnackBar(message: "Too many points, please zoom in",));
|
||||||
}
|
}
|
||||||
if(value != null && value.collection.isNotEmpty){
|
if(value != null && value.isNotEmpty){
|
||||||
//print("---- added---");
|
//print("---- added---");
|
||||||
locations.add(value);
|
locations.addAll(value);
|
||||||
loadCatsv2();
|
loadCatsv2();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -482,104 +450,65 @@ void login(String email, String password, BuildContext context){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GeoJsonFeature? getFeatureForLatLong(double lat, double long){
|
Location? getFeatureForLatLong(double lat, double long){
|
||||||
if(locations.length > 0){
|
if(locations.length > 0){
|
||||||
for(GeoJsonFeature i in locations[0].collection){
|
for(Location i in locations){
|
||||||
GeoJsonMultiPoint p = i.geometry as GeoJsonMultiPoint;
|
if(i.latitude == lat && i.longitude == long){
|
||||||
if(p.geoSerie!.geoPoints[0].latitude == lat && p.geoSerie!.geoPoints[0].longitude == long){
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void getAction(){
|
void makeNext(Location fs){
|
||||||
//print(currentUser[0]["user"]["id"]);
|
|
||||||
//print(currentFeature[0].properties!["location_id"]);
|
|
||||||
if(currentUser.length == 0){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int user_id = currentUser[0]["user"]["id"] as int;
|
|
||||||
print("---- loc id ${currentFeature[0].properties}");
|
|
||||||
int location_id = currentFeature[0].properties!["location_id"] as int;
|
|
||||||
ActionService.userAction(user_id, location_id).then((value){
|
|
||||||
print("------${value}");
|
|
||||||
if(value != null && value.length > 0){
|
|
||||||
currentAction.clear();
|
|
||||||
currentAction.add(value);
|
|
||||||
print("------${currentAction[0]}");
|
|
||||||
}else{
|
|
||||||
List<dynamic> initval = [{"user": user_id, "location": location_id, "wanttogo": false, "like": false, "checkin": false}];
|
|
||||||
currentAction.clear();
|
|
||||||
currentAction.add(initval);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void makeNext(GeoJsonFeature fs){
|
|
||||||
|
|
||||||
if(rog_mode == 1){
|
if(rog_mode == 1){
|
||||||
DestinationController destinationController = Get.find<DestinationController>();
|
DestinationController destinationController = Get.find<DestinationController>();
|
||||||
print("---- destination index--- ${destinationController.destination_index_data} --------");
|
print("---- destination index--- ${destinationController.destination_index_data} --------");
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
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 ){
|
for(int i=0; i<= locations.length - 1; i++){
|
||||||
|
Location p = locations[i];
|
||||||
|
|
||||||
|
if(p.latitude == fs.latitude && p.longitude == fs.longitude ){
|
||||||
|
|
||||||
if(currentFeature.length > 0){
|
if(currentFeature.length > 0){
|
||||||
currentFeature.clear();
|
currentFeature.clear();
|
||||||
}
|
}
|
||||||
if(i >= locations[0].collection.length - 1 ){
|
if(i >= locations.length - 1 ){
|
||||||
currentFeature.add(locations[0].collection[0] as GeoJsonFeature);
|
currentFeature.add(locations[0]);
|
||||||
getAction();
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
currentFeature.add(locations[0].collection[i + 1] as GeoJsonFeature);
|
currentFeature.add(locations[i + 1]);
|
||||||
getAction();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void makePrevious(GeoJsonFeature fs){
|
void makePrevious(Location fs){
|
||||||
|
|
||||||
if(rog_mode == 1){
|
if(rog_mode == 1){
|
||||||
DestinationController destinationController = Get.find<DestinationController>();
|
DestinationController destinationController = Get.find<DestinationController>();
|
||||||
print("---- destination index--- ${destinationController.destination_index_data} --------");
|
print("---- destination index--- ${destinationController.destination_index_data} --------");
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
|
|
||||||
GeoJsonFeature<GeoJsonMultiPoint> pt = fs as GeoJsonFeature<GeoJsonMultiPoint>;
|
for(int i=0; i<= locations.length - 1; i++){
|
||||||
|
Location p = locations[i];
|
||||||
|
|
||||||
for(int i=0; i<= locations[0].collection.length - 1; i++){
|
if(p.latitude == fs.longitude && p.longitude == fs.longitude ){
|
||||||
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){
|
if(currentFeature.length > 0){
|
||||||
currentFeature.clear();
|
currentFeature.clear();
|
||||||
}
|
}
|
||||||
if(i == 0 ){
|
if(i == 0 ){
|
||||||
currentFeature.add(locations[0].collection[locations[0].collection.length -1] as GeoJsonFeature);
|
currentFeature.add(locations[locations.length -1]);
|
||||||
getAction();
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
currentFeature.add(locations[0].collection[i - 1] as GeoJsonFeature);
|
currentFeature.add(locations[i - 1]);
|
||||||
getAction();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,7 +1,6 @@
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_typeahead/flutter_typeahead.dart';
|
import 'package:flutter_typeahead/flutter_typeahead.dart';
|
||||||
import 'package:geojson/geojson.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:rogapp/pages/index/index_controller.dart';
|
import 'package:rogapp/pages/index/index_controller.dart';
|
||||||
import 'package:rogapp/pages/search/search_controller.dart';
|
import 'package:rogapp/pages/search/search_controller.dart';
|
||||||
|
|||||||
@ -1,35 +1,35 @@
|
|||||||
import 'package:geojson/geojson.dart';
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
import '../utils/const.dart';
|
import '../utils/const.dart';
|
||||||
|
|
||||||
class LocationLineService{
|
class LocationLineService{
|
||||||
|
|
||||||
static Future<GeoJsonFeature?> loadLocationLines() async {
|
// static Future<GeoJsonFeature?> loadLocationLines() async {
|
||||||
final geo = GeoJson();
|
// final geo = GeoJson();
|
||||||
GeoJsonFeature? fs;
|
// GeoJsonFeature? fs;
|
||||||
String server_url = ConstValues.currentServer();
|
// String server_url = ConstValues.currentServer();
|
||||||
String url = '${server_url}/api/location_line/';
|
// String url = '${server_url}/api/location_line/';
|
||||||
//String url = 'http://localhost:8100/api/location_line/';
|
// //String url = 'http://localhost:8100/api/location_line/';
|
||||||
final response = await http.get(Uri.parse(url),
|
// final response = await http.get(Uri.parse(url),
|
||||||
headers: <String, String>{
|
// headers: <String, String>{
|
||||||
'Content-Type': 'application/json; charset=UTF-8',
|
// 'Content-Type': 'application/json; charset=UTF-8',
|
||||||
},
|
// },
|
||||||
);
|
// );
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
// if (response.statusCode == 200) {
|
||||||
|
|
||||||
geo.processedFeatures.listen((fst) {
|
// geo.processedFeatures.listen((fst) {
|
||||||
fs = fst;
|
// fs = fst;
|
||||||
});
|
// });
|
||||||
|
|
||||||
await geo.parse(response.body, verbose:true);
|
// await geo.parse(response.body, verbose:true);
|
||||||
|
|
||||||
return fs;
|
// return fs;
|
||||||
|
|
||||||
} else {
|
// } else {
|
||||||
throw Exception('Failed to create album.');
|
// throw Exception('Failed to create album.');
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,36 +1,35 @@
|
|||||||
import 'package:geojson/geojson.dart';
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
import '../utils/const.dart';
|
import '../utils/const.dart';
|
||||||
|
|
||||||
class LocationPolygonervice{
|
class LocationPolygonervice{
|
||||||
|
|
||||||
static Future<GeoJsonFeature?> loadLocationLines() async {
|
// static Future<GeoJsonFeature?> loadLocationLines() async {
|
||||||
final geo = GeoJson();
|
// final geo = GeoJson();
|
||||||
GeoJsonFeature? fs;
|
// GeoJsonFeature? fs;
|
||||||
|
|
||||||
String server_url = ConstValues.currentServer();
|
// String server_url = ConstValues.currentServer();
|
||||||
String url = '${server_url}/api/location_polygon/';
|
// String url = '${server_url}/api/location_polygon/';
|
||||||
//String url = 'http://localhost:8100/api/location_polygon/';
|
// //String url = 'http://localhost:8100/api/location_polygon/';
|
||||||
final response = await http.get(Uri.parse(url),
|
// final response = await http.get(Uri.parse(url),
|
||||||
headers: <String, String>{
|
// headers: <String, String>{
|
||||||
'Content-Type': 'application/json; charset=UTF-8',
|
// 'Content-Type': 'application/json; charset=UTF-8',
|
||||||
},
|
// },
|
||||||
);
|
// );
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
// if (response.statusCode == 200) {
|
||||||
|
|
||||||
geo.processedFeatures.listen((fst) {
|
// geo.processedFeatures.listen((fst) {
|
||||||
fs = fst;
|
// fs = fst;
|
||||||
});
|
// });
|
||||||
|
|
||||||
await geo.parse(response.body, verbose:true);
|
// await geo.parse(response.body, verbose:true);
|
||||||
|
|
||||||
return fs;
|
// return fs;
|
||||||
|
|
||||||
} else {
|
// } else {
|
||||||
throw Exception('Failed to create album.');
|
// throw Exception('Failed to create album.');
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,15 +1,20 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
import 'package:geojson_vi/geojson_vi.dart';
|
||||||
import 'package:geojson/geojson.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
import 'package:rogapp/model/location.dart';
|
||||||
import 'package:rogapp/utils/const.dart';
|
import 'package:rogapp/utils/const.dart';
|
||||||
|
|
||||||
class LocationService{
|
class LocationService extends GetxService{
|
||||||
|
Future<LocationService> init() async {
|
||||||
|
print('$runtimeType ready!');
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
static Future<GeoJsonFeatureCollection?> loadLocations() async {
|
Future<List<Location>> loadLocations() async {
|
||||||
String server_url = ConstValues.currentServer();
|
List<Location> locs = [];
|
||||||
String url = '${server_url}/api/location/';
|
String serverUrl = ConstValues.currentServer();
|
||||||
//String url = 'http://localhost:8100/api/location/';
|
String url = '${serverUrl}/api/location/';
|
||||||
final response = await http.get(Uri.parse(url),
|
final response = await http.get(Uri.parse(url),
|
||||||
headers: <String, String>{
|
headers: <String, String>{
|
||||||
'Content-Type': 'application/json; charset=UTF-8',
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
@ -17,25 +22,29 @@ class LocationService{
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
|
GeoJSONFeatureCollection coll = GeoJSONFeatureCollection.fromJSON(utf8.decode(response.bodyBytes));
|
||||||
return featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
for(int i=0; i<coll.features.length; i++ ){
|
||||||
|
GeoJSONFeature? gf = coll.features[i];
|
||||||
|
if(gf != null){
|
||||||
|
Location l = Location.fromGeoJSONFeture(gf);
|
||||||
|
locs.add(l);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return locs;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<GeoJsonFeatureCollection?> loadLocationsFor(String perfecture, String cat) async {
|
Future<List<Location>> loadLocationsFor(String perfecture, String cat) async {
|
||||||
|
List<Location> locs = [];
|
||||||
String url = "";
|
String url = "";
|
||||||
String server_url = ConstValues.currentServer();
|
String serverUrl = ConstValues.currentServer();
|
||||||
if(cat.isNotEmpty){
|
if(cat.isNotEmpty){
|
||||||
url = '${server_url}/api/inperf/?perf=' + perfecture + '&cat=' + cat;
|
url = '${serverUrl}/api/inperf/?perf=' + perfecture + '&cat=' + cat;
|
||||||
//url = 'http://localhost:8100/api/inperf/?perf=' + perfecture + '&cat=' + cat;
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
url = '${server_url}/api/inperf/?perf=' + perfecture;
|
url = '${serverUrl}/api/inperf/?perf=' + perfecture;
|
||||||
//url = 'http://localhost:8100/api/inperf/?perf=' + perfecture;
|
|
||||||
}
|
}
|
||||||
//print("----- url ---- ${url} --- ${cat}");
|
//print("----- url ---- ${url} --- ${cat}");
|
||||||
//String url = 'http://localhost:8100/api/inperf/?perf=' + perfecture + '&cat=' + cat;
|
|
||||||
final response = await http.get(Uri.parse(url),
|
final response = await http.get(Uri.parse(url),
|
||||||
headers: <String, String>{
|
headers: <String, String>{
|
||||||
'Content-Type': 'application/json; charset=UTF-8',
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
@ -43,25 +52,29 @@ class LocationService{
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
GeoJsonFeatureCollection cc = await featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
GeoJSONFeatureCollection coll = GeoJSONFeatureCollection.fromJSON(utf8.decode(response.bodyBytes));
|
||||||
//print(cc);
|
for(int i=0; i<coll.features.length; i++ ){
|
||||||
return cc; //featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
GeoJSONFeature? gf = coll.features[i];
|
||||||
|
if(gf != null){
|
||||||
|
Location l = Location.fromGeoJSONFeture(gf);
|
||||||
|
locs.add(l);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return locs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static Future<GeoJsonFeatureCollection?> loadLocationsSubFor(String subperfecture, String cat) async {
|
Future<List<Location>> loadLocationsSubFor(String subperfecture, String cat) async {
|
||||||
|
List<Location> locs = [];
|
||||||
String url = "";
|
String url = "";
|
||||||
String server_url = ConstValues.currentServer();
|
String server_url = ConstValues.currentServer();
|
||||||
if(cat.isNotEmpty){
|
if(cat.isNotEmpty){
|
||||||
url = '${server_url}/api/insubperf?subperf=' + subperfecture + '&cat=' + cat;
|
url = '${server_url}/api/insubperf?subperf=' + subperfecture + '&cat=' + cat;
|
||||||
//url = 'http://localhost:8100/api/insubperf?subperf=' + subperfecture + '&cat=' + cat;
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
print("------ loading location in sub----");
|
print("------ loading location in sub----");
|
||||||
url = '${server_url}/api/insubperf?subperf=' + subperfecture;
|
url = '${server_url}/api/insubperf?subperf=' + subperfecture;
|
||||||
//url = 'http://localhost:8100/api/insubperf?subperf=' + subperfecture;
|
|
||||||
}
|
}
|
||||||
final response = await http.get(Uri.parse(url),
|
final response = await http.get(Uri.parse(url),
|
||||||
headers: <String, String>{
|
headers: <String, String>{
|
||||||
@ -70,55 +83,52 @@ class LocationService{
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
GeoJsonFeatureCollection cc = await featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
GeoJSONFeatureCollection coll = GeoJSONFeatureCollection.fromJSON(utf8.decode(response.bodyBytes));
|
||||||
//print(cc);
|
for(int i=0; i<coll.features.length; i++ ){
|
||||||
return cc; //featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
GeoJSONFeature? gf = coll.features[i];
|
||||||
|
if(gf != null){
|
||||||
|
Location l = Location.fromGeoJSONFeture(gf);
|
||||||
|
locs.add(l);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return locs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<List<Location>> loadLocationsBound(double lat1, double lon1, double lat2, double lon2, double lat3, double lon3, double lat4, double lon4, String cat) async {
|
||||||
static Future<GeoJsonFeatureCollection?> loadLocationsBound(double lat1, double lon1, double lat2, double lon2, double lat3, double lon3, double lat4, double lon4, String cat) async {
|
List<Location> locs = [];
|
||||||
String url = "";
|
String url = "";
|
||||||
String server_url = ConstValues.currentServer();
|
String server_url = ConstValues.currentServer();
|
||||||
print("cat is ----- ${cat}");
|
//print("cat is ----- ${cat}");
|
||||||
if(cat.isNotEmpty){
|
if(cat.isNotEmpty){
|
||||||
url = '${server_url}/api/inbound?ln1=${lon1}&la1=${lat1}&ln2=${lon2}&la2=${lat2}&ln3=${lon3}&la3=${lat3}&ln4=${lon4}&la4=${lat4}' + '&cat=' + cat;
|
url = '${server_url}/api/inbound?ln1=${lon1}&la1=${lat1}&ln2=${lon2}&la2=${lat2}&ln3=${lon3}&la3=${lat3}&ln4=${lon4}&la4=${lat4}' + '&cat=' + cat;
|
||||||
//url = 'http://localhost:8100/api/inbound?ln1=${lon1}&la1=${lat1}&ln2=${lon2}&la2=${lat2}&ln3=${lon3}&la3=${lat3}&ln4=${lon4}&la4=${lat4}' + '&cat=' + cat;
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
url = '${server_url}/api/inbound?ln1=${lon1}&la1=${lat1}&ln2=${lon2}&la2=${lat2}&ln3=${lon3}&la3=${lat3}&ln4=${lon4}&la4=${lat4}';
|
url = '${server_url}/api/inbound?ln1=${lon1}&la1=${lat1}&ln2=${lon2}&la2=${lat2}&ln3=${lon3}&la3=${lat3}&ln4=${lon4}&la4=${lat4}';
|
||||||
//url = 'http://localhost:8100/api/inbound?ln1=${lon1}&la1=${lat1}&ln2=${lon2}&la2=${lat2}&ln3=${lon3}&la3=${lat3}&ln4=${lon4}&la4=${lat4}';
|
|
||||||
}
|
}
|
||||||
print("----url --- ${url}");
|
//print("----url --- ${url}");
|
||||||
final response = await http.get(Uri.parse(url),
|
final response = await http.get(Uri.parse(url),
|
||||||
headers: <String, String>{
|
headers: <String, String>{
|
||||||
'Content-Type': 'application/json; charset=UTF-8',
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 500) {
|
|
||||||
return GeoJsonFeatureCollection(); //featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
GeoJsonFeatureCollection cc = await featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
GeoJSONFeatureCollection coll = GeoJSONFeatureCollection.fromJSON(utf8.decode(response.bodyBytes));
|
||||||
if(cc.collection.isEmpty){
|
for(int i=0; i<coll.features.length; i++ ){
|
||||||
return null;
|
GeoJSONFeature? gf = coll.features[i];
|
||||||
}
|
if(gf != null){
|
||||||
else{
|
Location l = Location.fromGeoJSONFeture(gf);
|
||||||
return cc;
|
locs.add(l);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return locs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<List<Location>> loadCustomLocations(String name, String cat) async {
|
||||||
static Future<GeoJsonFeatureCollection?> loadCustomLocations(String name, String cat) async {
|
List<Location> locs = [];
|
||||||
String url = "";
|
String url = "";
|
||||||
if(cat == "-all-"){
|
|
||||||
cat = "";
|
|
||||||
}
|
|
||||||
String server_url = ConstValues.currentServer();
|
String server_url = ConstValues.currentServer();
|
||||||
print("cat is ----- ${cat}");
|
print("cat is ----- ${cat}");
|
||||||
if(cat.isNotEmpty){
|
if(cat.isNotEmpty){
|
||||||
@ -136,23 +146,18 @@ class LocationService{
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 500) {
|
if (response.statusCode == 200) {
|
||||||
return GeoJsonFeatureCollection(); //featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
GeoJSONFeatureCollection coll = GeoJSONFeatureCollection.fromJSON(utf8.decode(response.bodyBytes));
|
||||||
}
|
for(int i=0; i<coll.features.length; i++ ){
|
||||||
|
GeoJSONFeature? gf = coll.features[i];
|
||||||
if (response.statusCode == 200) {
|
if(gf != null){
|
||||||
GeoJsonFeatureCollection cc = await featuresFromGeoJson(utf8.decode(response.bodyBytes));
|
Location l = Location.fromGeoJSONFeture(gf);
|
||||||
if(cc.collection.isEmpty){
|
locs.add(l);
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
else{
|
|
||||||
return cc;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return locs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:rogapp/model/destination.dart';
|
import 'package:rogapp/model/location.dart';
|
||||||
import 'package:sqflite/sqflite.dart';
|
import 'package:sqflite/sqflite.dart';
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
|
|
||||||
@ -22,44 +22,62 @@ class DatabaseHelper{
|
|||||||
return openDatabase(join(await getDatabasesPath(), 'rog.db',), version: 1, onCreate: _onCreate);
|
return openDatabase(join(await getDatabasesPath(), 'rog.db',), version: 1, onCreate: _onCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Future _onCreate(Database db, int version) async {
|
Future _onCreate(Database db, int version) async {
|
||||||
await db.execute('''
|
await db.execute('''
|
||||||
CREATE TABLE destination(
|
CREATE TABLE destination(
|
||||||
location_id INTEGER PRIMARY KEY,
|
location_id INTEGER PRIMARY KEY,
|
||||||
name TEXT,
|
location_name TEXT,
|
||||||
address TEXT,
|
|
||||||
phone TEXT,
|
|
||||||
email TEXT,
|
|
||||||
webcontents TEXT,
|
|
||||||
videos TEXT,
|
|
||||||
category TEXT,
|
category TEXT,
|
||||||
series INTEGER,
|
zip TEXT,
|
||||||
lat REAL,
|
address TEXT,
|
||||||
lon REAL,
|
prefecture TEXT,
|
||||||
list_order INTEGER,
|
area TEXT,
|
||||||
|
city TEXT,
|
||||||
|
latitude REAL,
|
||||||
|
longitude REAL,
|
||||||
photos TEXT,
|
photos TEXT,
|
||||||
checkin_radious REAL,
|
fax TEXT,
|
||||||
|
email TEXT,
|
||||||
|
facility TEXT,
|
||||||
|
remark TEXT,
|
||||||
|
tags TEXT,
|
||||||
|
event_name TEXT,
|
||||||
|
event_active INTEGER,
|
||||||
|
hidden_location INTEGER,
|
||||||
auto_checkin INTEGER,
|
auto_checkin INTEGER,
|
||||||
selected INTEGER,
|
checkin_radius INTEGER,
|
||||||
checkedin INTEGER
|
checkin_point INTEGER,
|
||||||
|
buy_point INTEGER,
|
||||||
|
evaluation_value TEXT,
|
||||||
|
shop_closed INTEGER,
|
||||||
|
shop_shutdown INTEGER,
|
||||||
|
opening_hours_mon TEXT,
|
||||||
|
opening_hours_tue TEXT,
|
||||||
|
opening_hours_wed TEXT,
|
||||||
|
opening_hours_thu TEXT,
|
||||||
|
opening_hours_fri TEXT,
|
||||||
|
opening_hours_sat TEXT,
|
||||||
|
opening_hours_sun TEXT
|
||||||
|
parammeters TEXT
|
||||||
)
|
)
|
||||||
''');
|
''');
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<Destination>> getDestinations() async {
|
Future<List<Location>> getDestinations() async {
|
||||||
Database db = await instance.database;
|
Database db = await instance.database;
|
||||||
var dest = await db.query('destination');
|
var dest = await db.query('destination');
|
||||||
List<Destination> destList = dest.isNotEmpty ?
|
List<Location> destList = dest.isNotEmpty ?
|
||||||
dest.map((e) => Destination.fromMap(e)).toList() : [];
|
dest.map((e) => Location.fromMap(e)).toList() : [];
|
||||||
print("--------- ${destList}");
|
print("--------- ${destList}");
|
||||||
return destList;
|
return destList;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<Destination>> getDestinationByLatLon(double lat, double lon) async {
|
Future<List<Location>> getDestinationByLatLon(double lat, double lon) async {
|
||||||
Database db = await instance.database;
|
Database db = await instance.database;
|
||||||
var dest = await db.query('destination', where: "lat = ${lat} and lon= ${lon}");
|
var dest = await db.query('destination', where: "lat = ${lat} and lon= ${lon}");
|
||||||
List<Destination> destList = dest.isNotEmpty
|
List<Location> destList = dest.isNotEmpty
|
||||||
? dest.map((e) => Destination.fromMap(e)).toList() : [];
|
? dest.map((e) => Location.fromMap(e)).toList() : [];
|
||||||
return destList;
|
return destList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +94,7 @@ class DatabaseHelper{
|
|||||||
return dest > 0 ? true : false;
|
return dest > 0 ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<int> insertDestination(Destination dest) async {
|
Future<int> insertDestination(Location dest) async {
|
||||||
Database db = await instance.database;
|
Database db = await instance.database;
|
||||||
int res = await db.insert(
|
int res = await db.insert(
|
||||||
'destination',
|
'destination',
|
||||||
@ -87,7 +105,7 @@ class DatabaseHelper{
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<int> updateAction(Destination destination, bool checkin)async {
|
Future<int> updateAction(Location destination, bool checkin)async {
|
||||||
Database db = await instance.database;
|
Database db = await instance.database;
|
||||||
int act = checkin == false ? 0 : 1;
|
int act = checkin == false ? 0 : 1;
|
||||||
Map<String, dynamic> row = {
|
Map<String, dynamic> row = {
|
||||||
@ -101,10 +119,5 @@ class DatabaseHelper{
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Future<int?> getPending() async{
|
|
||||||
// Database db = await instance.database;
|
|
||||||
// return await Sqflite.firstIntValue(await db.rawQuery("SELECT COUNT(*) FROM incidents"));
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,8 +2,7 @@ import 'dart:async';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_map/plugin_api.dart';
|
import 'package:flutter_map/plugin_api.dart';
|
||||||
import 'package:flutter_map_location_marker/flutter_map_location_marker.dart';
|
import 'package:flutter_map_location_marker/flutter_map_location_marker.dart';
|
||||||
import 'package:flutter_map_marker_cluster/flutter_map_marker_cluster.dart';
|
import 'package:flutter_map_marker_cluster/flutter_map_marker_cluster.dart';2
|
||||||
import 'package:geojson/geojson.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:get/get_state_manager/get_state_manager.dart';
|
import 'package:get/get_state_manager/get_state_manager.dart';
|
||||||
import 'package:latlong2/latlong.dart';
|
import 'package:latlong2/latlong.dart';
|
||||||
@ -64,62 +63,11 @@ class MapWidget extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
|
|
||||||
onPositionChanged: (MapPosition pos, isvalue){
|
onPositionChanged: (MapPosition pos, isvalue){
|
||||||
|
|
||||||
// LatLng c1 = pos.center?? LatLng(0, 0);
|
|
||||||
|
|
||||||
// Timer(Duration(milliseconds:800), () {
|
|
||||||
// print(pos.bounds!.center);
|
|
||||||
// print("Yeah, this line is printed after 3 second");
|
|
||||||
// LatLng c2 = pos.center?? LatLng(0, 0);
|
|
||||||
// if(c1.latitude != 0 && c1.latitude == c2.latitude){
|
|
||||||
// print("------ calling ----");
|
|
||||||
// //indexController.loadLocationsBound();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// });
|
|
||||||
|
|
||||||
//
|
|
||||||
},
|
},
|
||||||
onTap: (_, __) =>
|
onTap: (_, __) =>
|
||||||
_popupController
|
_popupController
|
||||||
.hideAllPopups(), // Hide popup when the map is tapped.
|
.hideAllPopups(), // Hide popup when the map is tapped.
|
||||||
),
|
),
|
||||||
layers: [
|
|
||||||
// MarkerLayerOptions(
|
|
||||||
// markers: indexController.locations[0].collection.map((i) {
|
|
||||||
// print("i si ${i.properties!['location_id']}");
|
|
||||||
// GeoJsonMultiPoint p = i.geometry as GeoJsonMultiPoint;
|
|
||||||
// print("lat is ${p.geoSerie!.geoPoints[0].latitude} and lon is ${p.geoSerie!.geoPoints[0].longitude}");
|
|
||||||
// return Marker(
|
|
||||||
// anchorPos: AnchorPos.align(AnchorAlign.center),
|
|
||||||
// height: 70.0,
|
|
||||||
// width: 70.0,
|
|
||||||
// point: LatLng(p.geoSerie!.geoPoints[0].latitude, p.geoSerie!.geoPoints[0].longitude),
|
|
||||||
// builder: (ctx) =>
|
|
||||||
// IconButton(
|
|
||||||
// icon: const Icon(Icons.pin_drop),
|
|
||||||
// tooltip: 'Increase volume by 10',
|
|
||||||
// onPressed: () {
|
|
||||||
// GeoJsonFeature? fs = indexController.getFeatureForLatLong(p.geoSerie!.geoPoints[0].latitude, p.geoSerie!.geoPoints[0].longitude);
|
|
||||||
// print(fs);
|
|
||||||
// if(fs != null){
|
|
||||||
// if(indexController.currentFeature.length > 0) {
|
|
||||||
// indexController.currentFeature.clear();
|
|
||||||
// }
|
|
||||||
// indexController.currentFeature.add(fs);
|
|
||||||
// indexController.getAction();
|
|
||||||
|
|
||||||
// showModalBottomSheet(context: context, isScrollControlled: true,
|
|
||||||
// builder:((context) => BottomSheetWidget())
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// ),
|
|
||||||
|
|
||||||
// );
|
|
||||||
// }).toList(),
|
|
||||||
// ),
|
|
||||||
],
|
|
||||||
children: [
|
children: [
|
||||||
BaseLayer(),
|
BaseLayer(),
|
||||||
LocationMarkerLayerWidget(),
|
LocationMarkerLayerWidget(),
|
||||||
|
|||||||
41
pubspec.lock
41
pubspec.lock
@ -71,13 +71,6 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "1.0.4"
|
||||||
extra_pedantic:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: extra_pedantic
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.5.0"
|
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -212,20 +205,13 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
geodesy:
|
geojson_vi:
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: geodesy
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "0.4.0-nullsafety.0"
|
|
||||||
geojson:
|
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: geojson
|
name: geojson_vi
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "2.0.7"
|
||||||
geolocator:
|
geolocator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -268,13 +254,6 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.1"
|
version: "0.1.1"
|
||||||
geopoint:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: geopoint
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
get:
|
get:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -373,13 +352,6 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.17.0"
|
version: "0.17.0"
|
||||||
iso:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: iso
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
js:
|
js:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -581,13 +553,6 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.99"
|
version: "0.0.99"
|
||||||
slugify:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: slugify
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.0"
|
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@ -56,8 +56,8 @@ dependencies:
|
|||||||
material_design_icons_flutter: ^5.0.6595
|
material_design_icons_flutter: ^5.0.6595
|
||||||
google_fonts: any
|
google_fonts: any
|
||||||
image_picker: ^0.8.4+4
|
image_picker: ^0.8.4+4
|
||||||
#geojson_vi: ^2.0.7
|
geojson_vi: ^2.0.7
|
||||||
geojson: ^1.0.0
|
#geojson: ^1.0.0
|
||||||
url_launcher: ^6.0.20
|
url_launcher: ^6.0.20
|
||||||
flutter_breadcrumb: ^1.0.1
|
flutter_breadcrumb: ^1.0.1
|
||||||
timeline_tile: ^2.0.0
|
timeline_tile: ^2.0.0
|
||||||
|
|||||||
Reference in New Issue
Block a user