From 24051c2b7321ae8eba72a2f0894a850f985b85ff Mon Sep 17 00:00:00 2001 From: Alexandertp Date: Thu, 5 Sep 2024 14:55:34 +0200 Subject: [PATCH] Add CreateReview Page Co-authored-by: Reimar --- Mobile/lib/createreview.dart | 35 +++++++++++++++++++ Mobile/lib/main.dart | 7 ++-- Mobile/lib/models.dart | 14 ++++++++ .../lib/{reviewList.dart => reviewlist.dart} | 13 +++---- Mobile/pubspec.lock | 24 ++++++------- 5 files changed, 73 insertions(+), 20 deletions(-) create mode 100644 Mobile/lib/createreview.dart rename Mobile/lib/{reviewList.dart => reviewlist.dart} (84%) diff --git a/Mobile/lib/createreview.dart b/Mobile/lib/createreview.dart new file mode 100644 index 0000000..9772dc1 --- /dev/null +++ b/Mobile/lib/createreview.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import 'package:mobile/base/sidemenu.dart'; +import 'models.dart'; + +class CreateReviewPage extends StatefulWidget { + const CreateReviewPage({super.key}); + + @override + State createState() => _CreateReviewState(); + +} + +class _CreateReviewState extends State { + @override + Widget build(BuildContext context) { + final place = ModalRoute.of(context)!.settings.arguments as Place; + + return SideMenu( + selectedIndex: -1, + body: Scaffold( + body: SingleChildScrollView(child: Container( + decoration: const BoxDecoration(color: Color(0xFFF9F9F9)), + width: MediaQuery.of(context).size.width, + padding: const EdgeInsets.all(20), + child: Column(children: [ + Text(place.name, style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 24)), + Text(place.description, style: const TextStyle(color: Colors.grey)) + ]), + + + )) + ) + ); + } +} \ No newline at end of file diff --git a/Mobile/lib/main.dart b/Mobile/lib/main.dart index de4136f..a65b7ce 100644 --- a/Mobile/lib/main.dart +++ b/Mobile/lib/main.dart @@ -4,9 +4,10 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:latlong2/latlong.dart'; +import 'package:mobile/createreview.dart'; import 'package:mobile/favorites.dart'; import 'package:mobile/register.dart'; -import 'package:mobile/reviewList.dart'; +import 'package:mobile/reviewlist.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'login.dart'; import 'base/sidemenu.dart'; @@ -47,6 +48,7 @@ class MyApp extends StatelessWidget { '/login': (context) => const LoginPage(), '/register': (context) => const RegisterPage(), '/reviews': (context) => const ReviewListPage(), + '/create-review': (context) => const CreateReviewPage(), }, ); } @@ -166,11 +168,12 @@ class _MyHomePageState extends State { IconButton( icon: const Icon(Icons.rate_review), iconSize: 32, + color: Colors.grey, onPressed: () => Navigator.pushReplacementNamed( context, '/reviews', - arguments: _reviews.where((review) => review.lat == point.latitude && review.lng == point.longitude).toList() + arguments: ReviewList(_reviews.where((review) => review.lat == point.latitude && review.lng == point.longitude).toList(), Place(name, description)) ), ), ]), diff --git a/Mobile/lib/models.dart b/Mobile/lib/models.dart index 2a55ccf..f11b733 100644 --- a/Mobile/lib/models.dart +++ b/Mobile/lib/models.dart @@ -50,6 +50,20 @@ class Review { } } +class Place { + String name; + String description; + + Place(this.name, this.description); +} + +class ReviewList { + List reviews; + Place place; + + ReviewList(this.reviews, this.place); +} + class Login { String token; String id; diff --git a/Mobile/lib/reviewList.dart b/Mobile/lib/reviewlist.dart similarity index 84% rename from Mobile/lib/reviewList.dart rename to Mobile/lib/reviewlist.dart index b5604c1..29f791f 100644 --- a/Mobile/lib/reviewList.dart +++ b/Mobile/lib/reviewlist.dart @@ -13,13 +13,14 @@ class ReviewListPage extends StatefulWidget { class _ReviewListState extends State { @override Widget build(BuildContext context) { - // TODO: implement build - final reviews = ModalRoute.of(context)!.settings.arguments as List; + final arg = ModalRoute.of(context)!.settings.arguments as ReviewList; + final reviews = arg.reviews; + final place = arg.place; return SideMenu( selectedIndex: -1, body: Scaffold(body: SingleChildScrollView(child: Container( - decoration: const BoxDecoration(color: Color(0xFFF9f9f9)), + decoration: const BoxDecoration(color: Color(0xFFF9F9F9)), width: MediaQuery.of(context).size.width, padding: const EdgeInsets.all(20.0), child: Column(children: @@ -59,12 +60,12 @@ class _ReviewListState extends State { )).toList(), ), )), - floatingActionButton: const FloatingActionButton( - onPressed: null, + floatingActionButton: FloatingActionButton( + onPressed: () => Navigator.pushNamed(context, '/create-review', arguments: place), backgroundColor: Colors.blue, focusColor: Colors.blueGrey, tooltip: "Write a Review", - child: Icon(CupertinoIcons.plus), + child: const Icon(CupertinoIcons.plus), ), )); } diff --git a/Mobile/pubspec.lock b/Mobile/pubspec.lock index 3061e4c..4018227 100644 --- a/Mobile/pubspec.lock +++ b/Mobile/pubspec.lock @@ -220,18 +220,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: @@ -276,18 +276,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.12.0" mgrs_dart: dependency: transitive description: @@ -497,10 +497,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.0" typed_data: dependency: transitive description: @@ -537,10 +537,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "14.2.4" + version: "14.2.1" web: dependency: transitive description: