Show reviews on frontend with colored pins
Co-authored-by: Reimar <mail@reim.ar>
This commit is contained in:
parent
d58df6e529
commit
f7d9cc0fa0
@ -60,6 +60,7 @@ class MyHomePage extends StatefulWidget {
|
|||||||
class _MyHomePageState extends State<MyHomePage> {
|
class _MyHomePageState extends State<MyHomePage> {
|
||||||
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
List<Favorite> _favorites = [];
|
List<Favorite> _favorites = [];
|
||||||
|
List<Review> _reviews = [];
|
||||||
LatLng? _selectedPoint;
|
LatLng? _selectedPoint;
|
||||||
LatLng _currentPosition = LatLng(55.656707, 10.563214);
|
LatLng _currentPosition = LatLng(55.656707, 10.563214);
|
||||||
LatLng? _userPosition;
|
LatLng? _userPosition;
|
||||||
@ -81,6 +82,7 @@ class _MyHomePageState extends State<MyHomePage> {
|
|||||||
if (!isLoggedIn || !mounted) return;
|
if (!isLoggedIn || !mounted) return;
|
||||||
|
|
||||||
_fetchFavorites();
|
_fetchFavorites();
|
||||||
|
_fetchReviews();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,7 +218,16 @@ class _MyHomePageState extends State<MyHomePage> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> _fetchReviews() async {
|
||||||
|
final response = await api.request(context, api.ApiService.app, 'GET', '/reviews', null);
|
||||||
|
if (response == null) return;
|
||||||
|
|
||||||
|
final List<dynamic> reviews = jsonDecode(response);
|
||||||
|
setState(() {
|
||||||
|
_reviews = reviews.map((review) => Review.fromJson(review)).toList();
|
||||||
|
debugPrint(_reviews.length.toString());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> GetOpenStreetMapArea() async {
|
Future<void> GetOpenStreetMapArea() async {
|
||||||
final dynamic location;
|
final dynamic location;
|
||||||
@ -329,7 +340,31 @@ class _MyHomePageState extends State<MyHomePage> {
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
)),
|
)),
|
||||||
..._favorites.map((favorite) => MarkerLayer(
|
..._reviews.map((review) => MarkerLayer(
|
||||||
|
markers: [
|
||||||
|
Marker(
|
||||||
|
point: LatLng(review.lat, review.lng),
|
||||||
|
width: 30,
|
||||||
|
height: 50,
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
IconButton(
|
||||||
|
padding: const EdgeInsets.only(bottom: 10),
|
||||||
|
icon: const Icon(Icons.location_pin, size: 30, color:Colors.purpleAccent),
|
||||||
|
onPressed: () => _showLocation(LatLng(review.lat, review.lng), review.place_name, review.place_description),
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
padding: const EdgeInsets.only(bottom: 10),
|
||||||
|
icon: const Icon(Icons.location_on_outlined, size: 30, color: Colors.purple),
|
||||||
|
onPressed: () => _showLocation(LatLng(review.lat, review.lng), review.place_name, review.place_description),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
..._favorites.map((favorite) => MarkerLayer(
|
||||||
markers: [
|
markers: [
|
||||||
Marker(
|
Marker(
|
||||||
point: LatLng(favorite.lat, favorite.lng),
|
point: LatLng(favorite.lat, favorite.lng),
|
||||||
|
@ -22,6 +22,32 @@ class Favorite {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Review {
|
||||||
|
int id;
|
||||||
|
String userId;
|
||||||
|
double lat;
|
||||||
|
double lng;
|
||||||
|
String place_name;
|
||||||
|
String place_description;
|
||||||
|
String title;
|
||||||
|
int rating;
|
||||||
|
|
||||||
|
Review(this.id, this.userId, this.lat, this.lng, this.place_name, this.place_description, this.title, this.rating);
|
||||||
|
|
||||||
|
factory Review.fromJson(Map<String, dynamic> json) {
|
||||||
|
return Review(
|
||||||
|
json['id'],
|
||||||
|
json['user_id'],
|
||||||
|
json['lat'],
|
||||||
|
json['lng'],
|
||||||
|
json['place_name'],
|
||||||
|
json['place_description'],
|
||||||
|
json['title'],
|
||||||
|
json['rating']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class Login {
|
class Login {
|
||||||
String token;
|
String token;
|
||||||
String id;
|
String id;
|
||||||
|
@ -396,10 +396,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_android
|
name: shared_preferences_android
|
||||||
sha256: a7e8467e9181cef109f601e3f65765685786c1a738a83d7fbbde377589c0d974
|
sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.1"
|
version: "2.3.2"
|
||||||
shared_preferences_foundation:
|
shared_preferences_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -521,10 +521,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: uuid
|
name: uuid
|
||||||
sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90"
|
sha256: f33d6bb662f0e4f79dcd7ada2e6170f3b3a2530c28fc41f49a411ddedd576a77
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.4.2"
|
version: "4.5.0"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -7,6 +7,6 @@ CREATE TABLE reviews (
|
|||||||
place_description TEXT NOT NULL,
|
place_description TEXT NOT NULL,
|
||||||
title TEXT NOT NULL,
|
title TEXT NOT NULL,
|
||||||
content TEXT NOT NULL,
|
content TEXT NOT NULL,
|
||||||
rating REAL NOT NULL
|
rating INTEGER NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user