Added image principal geopoint + set centrage localisation mapdto
This commit is contained in:
parent
9e0277be6e
commit
b04d90a3ad
181
lib/Components/geoloc_input_container.dart
Normal file
181
lib/Components/geoloc_input_container.dart
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
import 'package:auto_size_text/auto_size_text.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:location_picker_flutter_map/location_picker_flutter_map.dart';
|
||||||
|
import 'package:manager_app/Components/loading_common.dart';
|
||||||
|
import 'package:manager_app/Components/message_notification.dart';
|
||||||
|
import 'package:manager_app/Components/rounded_button.dart';
|
||||||
|
import 'package:manager_app/Components/rounded_input_field.dart';
|
||||||
|
import 'package:manager_app/constants.dart';
|
||||||
|
|
||||||
|
class GeolocInputContainer extends StatefulWidget {
|
||||||
|
final Color color;
|
||||||
|
final String label;
|
||||||
|
final LatLong? initialValue;
|
||||||
|
final ValueChanged<LatLong> onChanged;
|
||||||
|
final bool isSmall;
|
||||||
|
final double fontSize;
|
||||||
|
final double fontSizeText;
|
||||||
|
const GeolocInputContainer({
|
||||||
|
Key? key,
|
||||||
|
this.color = kSecond,
|
||||||
|
required this.label,
|
||||||
|
required this.initialValue,
|
||||||
|
required this.onChanged,
|
||||||
|
this.isSmall = false,
|
||||||
|
this.fontSize = 25,
|
||||||
|
this.fontSizeText = 20,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<GeolocInputContainer> createState() => _GeolocInputContainerState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _GeolocInputContainerState extends State<GeolocInputContainer> {
|
||||||
|
LatLong? localisation;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
Size size = MediaQuery.of(context).size;
|
||||||
|
localisation = widget.initialValue;
|
||||||
|
|
||||||
|
return Container(
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Align(
|
||||||
|
alignment: AlignmentDirectional.centerStart,
|
||||||
|
child: AutoSizeText(
|
||||||
|
widget.label,
|
||||||
|
style: TextStyle(fontSize: widget.fontSize, fontWeight: FontWeight.w300),
|
||||||
|
maxLines: 2,
|
||||||
|
maxFontSize: widget.fontSize,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
child: Container(
|
||||||
|
width: size.width *0.15,
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () {
|
||||||
|
showDialog(
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
return AlertDialog(
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(20.0))
|
||||||
|
),
|
||||||
|
title: Center(child: Text(widget.label)),
|
||||||
|
content: SingleChildScrollView(
|
||||||
|
child: Container(
|
||||||
|
width: size.width *0.75,
|
||||||
|
height: 350,
|
||||||
|
child: FlutterLocationPicker(
|
||||||
|
initZoom: 14,
|
||||||
|
initPosition: localisation == null ? LatLong(50.429333, 4.891434) : LatLong(localisation!.latitude, localisation!.longitude),
|
||||||
|
minZoomLevel: 0,
|
||||||
|
maxZoomLevel: 17,
|
||||||
|
markerIcon: const Icon(
|
||||||
|
Icons.location_pin,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
size: 50,
|
||||||
|
),
|
||||||
|
loadingWidget: LoadingCommon(iconSize: 40.0),
|
||||||
|
searchBarHintColor: kPrimaryColor,
|
||||||
|
mapLoadingBackgroundColor: kSecond,
|
||||||
|
zoomButtonsBackgroundColor: kPrimaryColor,
|
||||||
|
zoomButtonsColor: Colors.white,
|
||||||
|
locationButtonBackgroundColor: kPrimaryColor,
|
||||||
|
locationButtonsColor: Colors.white,
|
||||||
|
countryFilter: "be, fr",
|
||||||
|
trackMyPosition: false,
|
||||||
|
searchBarHintText: "Chercher une localisation",
|
||||||
|
searchBarTextColor: Colors.black,
|
||||||
|
searchBarBackgroundColor: Colors.white,
|
||||||
|
showSelectLocationButton : true,
|
||||||
|
selectLocationButtonText: "Choisir cette localisation",
|
||||||
|
selectedLocationButtonTextstyle: const TextStyle(fontSize: 18, color: kPrimaryColor),
|
||||||
|
mapLanguage: 'fr',
|
||||||
|
onError: (e) => print(e),
|
||||||
|
selectLocationButtonLeadingIcon: const Icon(Icons.check, color: kPrimaryColor),
|
||||||
|
onPicked: (pickedData) {
|
||||||
|
print("onPicked");
|
||||||
|
localisation = pickedData.latLong;
|
||||||
|
print(localisation);
|
||||||
|
},
|
||||||
|
onChanged: (pickedData) {
|
||||||
|
print("onChanged");
|
||||||
|
print(pickedData.latLong.latitude);
|
||||||
|
print(pickedData.latLong.longitude);
|
||||||
|
print(pickedData.address);
|
||||||
|
print(pickedData.addressData);
|
||||||
|
},
|
||||||
|
showContributorBadgeForOSM: false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 180,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Annuler",
|
||||||
|
icon: Icons.undo,
|
||||||
|
color: kSecond,
|
||||||
|
press: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 180,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Valider",
|
||||||
|
icon: Icons.check,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
textColor: kWhite,
|
||||||
|
press: () {
|
||||||
|
if(localisation != null) {
|
||||||
|
widget.onChanged(localisation!);
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
} else {
|
||||||
|
showNotification(kPrimaryColor, kWhite, "Aucune localisation choisie", context, null);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}, context: context
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: widget.color,
|
||||||
|
borderRadius: BorderRadius.circular(50),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 5, right: 5, top: 15, bottom: 15),
|
||||||
|
child: Center(
|
||||||
|
child: AutoSizeText(
|
||||||
|
"Changer la localisation",
|
||||||
|
style: TextStyle(color: kWhite),
|
||||||
|
maxLines: 2,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +1,8 @@
|
|||||||
import 'package:diacritic/diacritic.dart';
|
import 'package:diacritic/diacritic.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
||||||
|
import 'package:location_picker_flutter_map/location_picker_flutter_map.dart';
|
||||||
|
import 'package:manager_app/Components/geoloc_input_container.dart';
|
||||||
import 'package:manager_app/Components/multi_select_dropdown_language_container.dart';
|
import 'package:manager_app/Components/multi_select_dropdown_language_container.dart';
|
||||||
import 'package:manager_app/Screens/Configurations/Section/SubSection/Map/category_input_container.dart';
|
import 'package:manager_app/Screens/Configurations/Section/SubSection/Map/category_input_container.dart';
|
||||||
import 'package:manager_app/Components/dropDown_input_container.dart';
|
import 'package:manager_app/Components/dropDown_input_container.dart';
|
||||||
@ -174,6 +176,19 @@ class _MapConfigState extends State<MapConfig> {
|
|||||||
widget.onChanged(jsonEncode(mapDTO).toString());
|
widget.onChanged(jsonEncode(mapDTO).toString());
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
GeolocInputContainer(
|
||||||
|
label: "Point de centrage:",
|
||||||
|
initialValue: mapDTO.latitude != null && mapDTO.longitude != null ? LatLong(double.parse(mapDTO.latitude!), double.parse(mapDTO.longitude!)) : null,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
onChanged: (LatLong? localisation) {
|
||||||
|
if(localisation != null) {
|
||||||
|
mapDTO.longitude = localisation.longitude.toString();
|
||||||
|
mapDTO.latitude = localisation.latitude.toString();
|
||||||
|
}
|
||||||
|
widget.onChanged(jsonEncode(mapDTO).toString());
|
||||||
|
},
|
||||||
|
isSmall: true
|
||||||
|
),
|
||||||
// Icon
|
// Icon
|
||||||
ResourceInputContainer(
|
ResourceInputContainer(
|
||||||
label: "Icône:",
|
label: "Icône:",
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import 'package:location_picker_flutter_map/location_picker_flutter_map.dart';
|
|||||||
import 'package:manager_app/Components/dropDown_input_container_categories.dart';
|
import 'package:manager_app/Components/dropDown_input_container_categories.dart';
|
||||||
import 'package:manager_app/Components/loading_common.dart';
|
import 'package:manager_app/Components/loading_common.dart';
|
||||||
import 'package:manager_app/Components/multi_string_input_container.dart';
|
import 'package:manager_app/Components/multi_string_input_container.dart';
|
||||||
|
import 'package:manager_app/Components/resource_input_container.dart';
|
||||||
import 'package:manager_app/Components/rounded_button.dart';
|
import 'package:manager_app/Components/rounded_button.dart';
|
||||||
import 'package:manager_app/Components/string_input_container.dart';
|
import 'package:manager_app/Components/string_input_container.dart';
|
||||||
import 'package:manager_app/Models/managerContext.dart';
|
import 'package:manager_app/Models/managerContext.dart';
|
||||||
@ -256,6 +257,20 @@ void showNewOrUpdateGeoPoint(MapDTO mapDTO, GeoPointDTO? inputGeoPointDTO, Funct
|
|||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
children: [
|
children: [
|
||||||
|
ResourceInputContainer(
|
||||||
|
label: "Image principal:",
|
||||||
|
initialValue: geoPointDTO.imageResourceId != null ? geoPointDTO.imageResourceId : null,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
onChanged: (ResourceDTO resource) {
|
||||||
|
if(resource.id == null) {
|
||||||
|
geoPointDTO.imageResourceId = null;
|
||||||
|
geoPointDTO.imageUrl = null;
|
||||||
|
} else {
|
||||||
|
geoPointDTO.imageResourceId = resource.id;
|
||||||
|
geoPointDTO.imageUrl = resource.url;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
if(mapDTO.categories != null && mapDTO.categories!.isNotEmpty)
|
if(mapDTO.categories != null && mapDTO.categories!.isNotEmpty)
|
||||||
Container(
|
Container(
|
||||||
constraints: BoxConstraints(minHeight: 50, maxHeight: 80),
|
constraints: BoxConstraints(minHeight: 50, maxHeight: 80),
|
||||||
|
|||||||
@ -2153,6 +2153,12 @@ components:
|
|||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/CategorieDTO'
|
$ref: '#/components/schemas/CategorieDTO'
|
||||||
|
latitude:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
longitude:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
MapTypeApp:
|
MapTypeApp:
|
||||||
type: integer
|
type: integer
|
||||||
description: |-
|
description: |-
|
||||||
@ -2247,6 +2253,12 @@ components:
|
|||||||
longitude:
|
longitude:
|
||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
|
imageResourceId:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
imageUrl:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
schedules:
|
schedules:
|
||||||
type: array
|
type: array
|
||||||
nullable: true
|
nullable: true
|
||||||
|
|||||||
@ -16,6 +16,8 @@ Name | Type | Description | Notes
|
|||||||
**categorieId** | **int** | | [optional]
|
**categorieId** | **int** | | [optional]
|
||||||
**latitude** | **String** | | [optional]
|
**latitude** | **String** | | [optional]
|
||||||
**longitude** | **String** | | [optional]
|
**longitude** | **String** | | [optional]
|
||||||
|
**imageResourceId** | **String** | | [optional]
|
||||||
|
**imageUrl** | **String** | | [optional]
|
||||||
**schedules** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
|
**schedules** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
|
||||||
**prices** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
|
**prices** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
|
||||||
**phone** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
|
**phone** | [**List<TranslationDTO>**](TranslationDTO.md) | | [optional] [default to const []]
|
||||||
|
|||||||
@ -16,6 +16,8 @@ Name | Type | Description | Notes
|
|||||||
**iconResourceId** | **String** | | [optional]
|
**iconResourceId** | **String** | | [optional]
|
||||||
**iconSource** | **String** | | [optional]
|
**iconSource** | **String** | | [optional]
|
||||||
**categories** | [**List<CategorieDTO>**](CategorieDTO.md) | | [optional] [default to const []]
|
**categories** | [**List<CategorieDTO>**](CategorieDTO.md) | | [optional] [default to const []]
|
||||||
|
**latitude** | **String** | | [optional]
|
||||||
|
**longitude** | **String** | | [optional]
|
||||||
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,8 @@ class GeoPointDTO {
|
|||||||
this.categorieId,
|
this.categorieId,
|
||||||
this.latitude,
|
this.latitude,
|
||||||
this.longitude,
|
this.longitude,
|
||||||
|
this.imageResourceId,
|
||||||
|
this.imageUrl,
|
||||||
this.schedules = const [],
|
this.schedules = const [],
|
||||||
this.prices = const [],
|
this.prices = const [],
|
||||||
this.phone = const [],
|
this.phone = const [],
|
||||||
@ -43,6 +45,10 @@ class GeoPointDTO {
|
|||||||
|
|
||||||
String? longitude;
|
String? longitude;
|
||||||
|
|
||||||
|
String? imageResourceId;
|
||||||
|
|
||||||
|
String? imageUrl;
|
||||||
|
|
||||||
List<TranslationDTO>? schedules;
|
List<TranslationDTO>? schedules;
|
||||||
|
|
||||||
List<TranslationDTO>? prices;
|
List<TranslationDTO>? prices;
|
||||||
@ -63,6 +69,8 @@ class GeoPointDTO {
|
|||||||
other.categorieId == categorieId &&
|
other.categorieId == categorieId &&
|
||||||
other.latitude == latitude &&
|
other.latitude == latitude &&
|
||||||
other.longitude == longitude &&
|
other.longitude == longitude &&
|
||||||
|
other.imageResourceId == imageResourceId &&
|
||||||
|
other.imageUrl == imageUrl &&
|
||||||
other.schedules == schedules &&
|
other.schedules == schedules &&
|
||||||
other.prices == prices &&
|
other.prices == prices &&
|
||||||
other.phone == phone &&
|
other.phone == phone &&
|
||||||
@ -80,6 +88,8 @@ class GeoPointDTO {
|
|||||||
(categorieId == null ? 0 : categorieId!.hashCode) +
|
(categorieId == null ? 0 : categorieId!.hashCode) +
|
||||||
(latitude == null ? 0 : latitude!.hashCode) +
|
(latitude == null ? 0 : latitude!.hashCode) +
|
||||||
(longitude == null ? 0 : longitude!.hashCode) +
|
(longitude == null ? 0 : longitude!.hashCode) +
|
||||||
|
(imageResourceId == null ? 0 : imageResourceId!.hashCode) +
|
||||||
|
(imageUrl == null ? 0 : imageUrl!.hashCode) +
|
||||||
(schedules == null ? 0 : schedules!.hashCode) +
|
(schedules == null ? 0 : schedules!.hashCode) +
|
||||||
(prices == null ? 0 : prices!.hashCode) +
|
(prices == null ? 0 : prices!.hashCode) +
|
||||||
(phone == null ? 0 : phone!.hashCode) +
|
(phone == null ? 0 : phone!.hashCode) +
|
||||||
@ -87,7 +97,7 @@ class GeoPointDTO {
|
|||||||
(site == null ? 0 : site!.hashCode);
|
(site == null ? 0 : site!.hashCode);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => 'GeoPointDTO[id=$id, title=$title, description=$description, contents=$contents, categorie=$categorie, categorieId=$categorieId, latitude=$latitude, longitude=$longitude, schedules=$schedules, prices=$prices, phone=$phone, email=$email, site=$site]';
|
String toString() => 'GeoPointDTO[id=$id, title=$title, description=$description, contents=$contents, categorie=$categorie, categorieId=$categorieId, latitude=$latitude, longitude=$longitude, imageResourceId=$imageResourceId, imageUrl=$imageUrl, schedules=$schedules, prices=$prices, phone=$phone, email=$email, site=$site]';
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final json = <String, dynamic>{};
|
final json = <String, dynamic>{};
|
||||||
@ -131,6 +141,16 @@ class GeoPointDTO {
|
|||||||
} else {
|
} else {
|
||||||
json[r'longitude'] = null;
|
json[r'longitude'] = null;
|
||||||
}
|
}
|
||||||
|
if (this.imageResourceId != null) {
|
||||||
|
json[r'imageResourceId'] = this.imageResourceId;
|
||||||
|
} else {
|
||||||
|
json[r'imageResourceId'] = null;
|
||||||
|
}
|
||||||
|
if (this.imageUrl != null) {
|
||||||
|
json[r'imageUrl'] = this.imageUrl;
|
||||||
|
} else {
|
||||||
|
json[r'imageUrl'] = null;
|
||||||
|
}
|
||||||
if (this.schedules != null) {
|
if (this.schedules != null) {
|
||||||
json[r'schedules'] = this.schedules;
|
json[r'schedules'] = this.schedules;
|
||||||
} else {
|
} else {
|
||||||
@ -186,6 +206,8 @@ class GeoPointDTO {
|
|||||||
categorieId: mapValueOfType<int>(json, r'categorieId'),
|
categorieId: mapValueOfType<int>(json, r'categorieId'),
|
||||||
latitude: mapValueOfType<String>(json, r'latitude'),
|
latitude: mapValueOfType<String>(json, r'latitude'),
|
||||||
longitude: mapValueOfType<String>(json, r'longitude'),
|
longitude: mapValueOfType<String>(json, r'longitude'),
|
||||||
|
imageResourceId: mapValueOfType<String>(json, r'imageResourceId'),
|
||||||
|
imageUrl: mapValueOfType<String>(json, r'imageUrl'),
|
||||||
schedules: TranslationDTO.listFromJson(json[r'schedules']),
|
schedules: TranslationDTO.listFromJson(json[r'schedules']),
|
||||||
prices: TranslationDTO.listFromJson(json[r'prices']),
|
prices: TranslationDTO.listFromJson(json[r'prices']),
|
||||||
phone: TranslationDTO.listFromJson(json[r'phone']),
|
phone: TranslationDTO.listFromJson(json[r'phone']),
|
||||||
|
|||||||
@ -21,6 +21,8 @@ class MapDTO {
|
|||||||
this.iconResourceId,
|
this.iconResourceId,
|
||||||
this.iconSource,
|
this.iconSource,
|
||||||
this.categories = const [],
|
this.categories = const [],
|
||||||
|
this.latitude,
|
||||||
|
this.longitude,
|
||||||
});
|
});
|
||||||
|
|
||||||
///
|
///
|
||||||
@ -45,31 +47,39 @@ class MapDTO {
|
|||||||
|
|
||||||
List<CategorieDTO>? categories;
|
List<CategorieDTO>? categories;
|
||||||
|
|
||||||
|
String? latitude;
|
||||||
|
|
||||||
|
String? longitude;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) => identical(this, other) || other is MapDTO &&
|
bool operator ==(Object other) => identical(this, other) || other is MapDTO &&
|
||||||
other.zoom == zoom &&
|
other.zoom == zoom &&
|
||||||
other.mapType == mapType &&
|
other.mapType == mapType &&
|
||||||
other.mapTypeMapbox == mapTypeMapbox &&
|
other.mapTypeMapbox == mapTypeMapbox &&
|
||||||
other.mapProvider == mapProvider &&
|
other.mapProvider == mapProvider &&
|
||||||
other.points == points &&
|
other.points == points &&
|
||||||
other.iconResourceId == iconResourceId &&
|
other.iconResourceId == iconResourceId &&
|
||||||
other.iconSource == iconSource &&
|
other.iconSource == iconSource &&
|
||||||
other.categories == categories;
|
other.categories == categories &&
|
||||||
|
other.latitude == latitude &&
|
||||||
|
other.longitude == longitude;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode =>
|
int get hashCode =>
|
||||||
// ignore: unnecessary_parenthesis
|
// ignore: unnecessary_parenthesis
|
||||||
(zoom == null ? 0 : zoom!.hashCode) +
|
(zoom == null ? 0 : zoom!.hashCode) +
|
||||||
(mapType == null ? 0 : mapType!.hashCode) +
|
(mapType == null ? 0 : mapType!.hashCode) +
|
||||||
(mapTypeMapbox == null ? 0 : mapTypeMapbox!.hashCode) +
|
(mapTypeMapbox == null ? 0 : mapTypeMapbox!.hashCode) +
|
||||||
(mapProvider == null ? 0 : mapProvider!.hashCode) +
|
(mapProvider == null ? 0 : mapProvider!.hashCode) +
|
||||||
(points == null ? 0 : points!.hashCode) +
|
(points == null ? 0 : points!.hashCode) +
|
||||||
(iconResourceId == null ? 0 : iconResourceId!.hashCode) +
|
(iconResourceId == null ? 0 : iconResourceId!.hashCode) +
|
||||||
(iconSource == null ? 0 : iconSource!.hashCode) +
|
(iconSource == null ? 0 : iconSource!.hashCode) +
|
||||||
(categories == null ? 0 : categories!.hashCode);
|
(categories == null ? 0 : categories!.hashCode) +
|
||||||
|
(latitude == null ? 0 : latitude!.hashCode) +
|
||||||
|
(longitude == null ? 0 : longitude!.hashCode);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => 'MapDTO[zoom=$zoom, mapType=$mapType, mapTypeMapbox=$mapTypeMapbox, mapProvider=$mapProvider, points=$points, iconResourceId=$iconResourceId, iconSource=$iconSource, categories=$categories]';
|
String toString() => 'MapDTO[zoom=$zoom, mapType=$mapType, mapTypeMapbox=$mapTypeMapbox, mapProvider=$mapProvider, points=$points, iconResourceId=$iconResourceId, iconSource=$iconSource, categories=$categories, latitude=$latitude, longitude=$longitude]';
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final json = <String, dynamic>{};
|
final json = <String, dynamic>{};
|
||||||
@ -113,6 +123,16 @@ class MapDTO {
|
|||||||
} else {
|
} else {
|
||||||
json[r'categories'] = null;
|
json[r'categories'] = null;
|
||||||
}
|
}
|
||||||
|
if (this.latitude != null) {
|
||||||
|
json[r'latitude'] = this.latitude;
|
||||||
|
} else {
|
||||||
|
json[r'latitude'] = null;
|
||||||
|
}
|
||||||
|
if (this.longitude != null) {
|
||||||
|
json[r'longitude'] = this.longitude;
|
||||||
|
} else {
|
||||||
|
json[r'longitude'] = null;
|
||||||
|
}
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,6 +163,8 @@ class MapDTO {
|
|||||||
iconResourceId: mapValueOfType<String>(json, r'iconResourceId'),
|
iconResourceId: mapValueOfType<String>(json, r'iconResourceId'),
|
||||||
iconSource: mapValueOfType<String>(json, r'iconSource'),
|
iconSource: mapValueOfType<String>(json, r'iconSource'),
|
||||||
categories: CategorieDTO.listFromJson(json[r'categories']),
|
categories: CategorieDTO.listFromJson(json[r'categories']),
|
||||||
|
latitude: mapValueOfType<String>(json, r'latitude'),
|
||||||
|
longitude: mapValueOfType<String>(json, r'longitude'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||||||
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
version: 2.0.2+6
|
version: 2.0.3+7
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.1.0 <4.0.0"
|
sdk: ">=3.1.0 <4.0.0"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user