ManageAccountPage #42
|
@ -583,6 +583,18 @@
|
||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "2.12"
|
"languageVersion": "2.12"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "syncfusion_flutter_core",
|
||||||
|
"rootUri": "file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/syncfusion_flutter_core-20.1.57",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "syncfusion_flutter_sliders",
|
||||||
|
"rootUri": "file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/syncfusion_flutter_sliders-20.1.57",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "term_glyph",
|
"name": "term_glyph",
|
||||||
"rootUri": "file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0",
|
"rootUri": "file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0",
|
||||||
|
@ -668,7 +680,7 @@
|
||||||
"languageVersion": "2.16"
|
"languageVersion": "2.16"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"generated": "2022-05-25T20:13:28.297521Z",
|
"generated": "2022-05-25T20:14:40.881337Z",
|
||||||
"generator": "pub",
|
"generator": "pub",
|
||||||
"generatorVersion": "2.16.2"
|
"generatorVersion": "2.16.2"
|
||||||
}
|
}
|
||||||
|
|
|
@ -374,6 +374,14 @@ string_scanner
|
||||||
2.12
|
2.12
|
||||||
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/
|
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/
|
||||||
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/lib/
|
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/lib/
|
||||||
|
syncfusion_flutter_core
|
||||||
|
2.12
|
||||||
|
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/syncfusion_flutter_core-20.1.57/
|
||||||
|
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/syncfusion_flutter_core-20.1.57/lib/
|
||||||
|
syncfusion_flutter_sliders
|
||||||
|
2.12
|
||||||
|
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/syncfusion_flutter_sliders-20.1.57/
|
||||||
|
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/syncfusion_flutter_sliders-20.1.57/lib/
|
||||||
term_glyph
|
term_glyph
|
||||||
2.12
|
2.12
|
||||||
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0/
|
file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0/
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
||||||
#
|
#
|
||||||
# For more info see: https://dart.dev/go/dot-packages-deprecation
|
# For more info see: https://dart.dev/go/dot-packages-deprecation
|
||||||
#
|
#
|
||||||
# Generated by pub on 2022-05-25 22:13:28.277546.
|
# Generated by pub on 2022-05-25 22:14:40.864538.
|
||||||
archive:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/archive-3.3.0/lib/
|
archive:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/archive-3.3.0/lib/
|
||||||
args:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/
|
args:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/args-2.3.1/lib/
|
||||||
async:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.8.2/lib/
|
async:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.8.2/lib/
|
||||||
|
@ -101,6 +101,8 @@ stack_trace:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org
|
||||||
stream_channel:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib/
|
stream_channel:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib/
|
||||||
stream_transform:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/stream_transform-2.0.0/lib/
|
stream_transform:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/stream_transform-2.0.0/lib/
|
||||||
string_scanner:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/lib/
|
string_scanner:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/lib/
|
||||||
|
syncfusion_flutter_core:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/syncfusion_flutter_core-20.1.57/lib/
|
||||||
|
syncfusion_flutter_sliders:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/syncfusion_flutter_sliders-20.1.57/lib/
|
||||||
term_glyph:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0/lib/
|
term_glyph:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0/lib/
|
||||||
test_api:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.8/lib/
|
test_api:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.8/lib/
|
||||||
typed_data:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0/lib/
|
typed_data:file:///Users/marahzeibak/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0/lib/
|
||||||
|
|
|
@ -4,19 +4,18 @@ import 'Map.dart';
|
||||||
import 'FavoritePage.dart';
|
import 'FavoritePage.dart';
|
||||||
import 'SettingsPage.dart';
|
import 'SettingsPage.dart';
|
||||||
import 'globals.dart' as globals;
|
import 'globals.dart' as globals;
|
||||||
|
import 'ListViewPage.dart';
|
||||||
|
|
||||||
class BottomNavPage extends StatefulWidget {
|
class BottomNavPage extends StatefulWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<BottomNavPage> createState() => BottomNavPageState();
|
State<BottomNavPage> createState() => BottomNavPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class BottomNavPageState extends State<BottomNavPage> {
|
class BottomNavPageState extends State<BottomNavPage> {
|
||||||
|
|
||||||
int currentIndex = 0;
|
int currentIndex = 0;
|
||||||
final screens =[
|
final screens = [
|
||||||
Map(),
|
Map(),
|
||||||
|
ListViewPage(),
|
||||||
FavoritePage(),
|
FavoritePage(),
|
||||||
SettingsPage(),
|
SettingsPage(),
|
||||||
];
|
];
|
||||||
|
@ -25,25 +24,29 @@ class BottomNavPageState extends State<BottomNavPage> {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: screens[currentIndex],
|
body: screens[currentIndex],
|
||||||
bottomNavigationBar: BottomNavigationBar(
|
bottomNavigationBar: BottomNavigationBar(
|
||||||
backgroundColor: globals.BACKGROUNDCOLOR,
|
type: BottomNavigationBarType.fixed,
|
||||||
selectedItemColor: globals.ITEMCOLOR,
|
backgroundColor: globals.BACKGROUNDCOLOR,
|
||||||
currentIndex: currentIndex,
|
selectedItemColor: globals.ITEMCOLOR,
|
||||||
onTap: (index) => setState( () => currentIndex = index),
|
currentIndex: currentIndex,
|
||||||
items: const[
|
onTap: (index) => setState(() => currentIndex = index),
|
||||||
BottomNavigationBarItem(
|
items: const [
|
||||||
icon: Icon(Icons.home),
|
BottomNavigationBarItem(
|
||||||
label: "Home",
|
icon: Icon(Icons.map_outlined),
|
||||||
),
|
label: "Map",
|
||||||
BottomNavigationBarItem(
|
),
|
||||||
icon: Icon(Icons.favorite),
|
BottomNavigationBarItem(
|
||||||
label: "Liked",
|
icon: Icon(Icons.list_sharp),
|
||||||
),
|
label: "List View",
|
||||||
BottomNavigationBarItem(
|
),
|
||||||
icon: Icon(Icons.settings),
|
BottomNavigationBarItem(
|
||||||
label: "Settings",
|
icon: Icon(Icons.favorite),
|
||||||
),
|
label: "Liked",
|
||||||
]),
|
),
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: Icon(Icons.settings),
|
||||||
|
label: "Settings",
|
||||||
|
),
|
||||||
|
]),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -313,8 +313,6 @@ class FormForFeedbackState extends State<FormForFeedback> {
|
||||||
controlAffinity: ListTileControlAffinity.leading, //lägger checkboxen på vänster sida om texten
|
controlAffinity: ListTileControlAffinity.leading, //lägger checkboxen på vänster sida om texten
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(height: 10),
|
|
||||||
|
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(40.0),
|
padding: const EdgeInsets.all(40.0),
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
|
@ -377,7 +375,9 @@ class FormForFeedbackState extends State<FormForFeedback> {
|
||||||
|
|
||||||
|
|
||||||
child: Container(
|
child: Container(
|
||||||
color: Colors.purple,
|
color: Color.fromARGB(255, 151, 92, 115),
|
||||||
|
height: 60,
|
||||||
|
width: 200,
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: const <Widget>[
|
children: const <Widget>[
|
||||||
|
@ -393,7 +393,7 @@ class FormForFeedbackState extends State<FormForFeedback> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(height: 30),
|
const SizedBox(height: 60),
|
||||||
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
10
lib/ListViewPage.dart
Normal file
10
lib/ListViewPage.dart
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
|
||||||
|
class ListViewPage extends StatefulWidget{
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() {
|
||||||
|
// TODO: implement createState
|
||||||
|
throw UnimplementedError();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
453
lib/Map.dart
453
lib/Map.dart
|
@ -1,23 +1,32 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_applicationdemo/WebScraper.dart';
|
import 'package:flutter_applicationdemo/WebScraper.dart';
|
||||||
|
import 'package:flutter_applicationdemo/HomePage.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'login/User.dart';
|
||||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||||
import 'package:flutter_google_places/flutter_google_places.dart';
|
import 'package:flutter_google_places/flutter_google_places.dart';
|
||||||
import 'package:google_api_headers/google_api_headers.dart';
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
import 'package:http/retry.dart';
|
||||||
|
import 'package:intl/number_symbols.dart';
|
||||||
import 'package:location/location.dart';
|
import 'package:location/location.dart';
|
||||||
|
<<<<<<< HEAD
|
||||||
import 'package:geolocator/geolocator.dart';
|
import 'package:geolocator/geolocator.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
import 'package:flutter_applicationdemo/login/User.dart';
|
import 'package:flutter_applicationdemo/login/User.dart';
|
||||||
import 'SettingsPage.dart';
|
import 'SettingsPage.dart';
|
||||||
import 'Venue.dart';
|
import 'Venue.dart';
|
||||||
import 'globals.dart' as globals;
|
import 'globals.dart' as globals;
|
||||||
|
import 'package:syncfusion_flutter_sliders/sliders.dart';
|
||||||
|
|
||||||
import 'globals.dart' as globals;
|
import 'globals.dart' as globals;
|
||||||
|
=======
|
||||||
|
import 'SettingsPage.dart';
|
||||||
|
import 'Venue.dart';
|
||||||
|
import 'globals.dart' as globals;
|
||||||
|
import 'FeedbackPage.dart';
|
||||||
|
import 'login/CreateAccountPage.dart';
|
||||||
|
import 'login/signInPage.dart';
|
||||||
|
>>>>>>> master
|
||||||
|
|
||||||
class Map extends StatefulWidget {
|
class Map extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
|
@ -28,29 +37,26 @@ const kGoogleApiKey = "AIzaSyAUmhd6Xxud8SwgDxJ4LlYlcntm01FGoSk";
|
||||||
|
|
||||||
final homeSacffoldKey = GlobalKey<ScaffoldState>();
|
final homeSacffoldKey = GlobalKey<ScaffoldState>();
|
||||||
|
|
||||||
|
|
||||||
class MapState extends State<Map> {
|
class MapState extends State<Map> {
|
||||||
|
|
||||||
Future getMerkerData() async {
|
Future getMerkerData() async {
|
||||||
var url = Uri.parse('https://openstreetgs.stockholm.se/geoservice/api/b8e20fd7-5654-465e-8976-35b4de902b41/wfs?service=wfs&version=1.1.0&request=GetFeature&typeNames=od_gis:Markupplatelse&srsName=EPSG:4326&outputFormat=json');
|
var url = Uri.parse(
|
||||||
|
'https://openstreetgs.stockholm.se/geoservice/api/b8e20fd7-5654-465e-8976-35b4de902b41/wfs?service=wfs&version=1.1.0&request=GetFeature&typeNames=od_gis:Markupplatelse&srsName=EPSG:4326&outputFormat=json');
|
||||||
var response = await http.get(url);
|
var response = await http.get(url);
|
||||||
|
|
||||||
print('Response status: ${response.statusCode}');
|
print('Response status: ${response.statusCode}');
|
||||||
// print('Response body: ${response.body.toString()}');
|
// print('Response body: ${response.body.toString()}');
|
||||||
var jsonData = jsonDecode(response.body);
|
var jsonData = jsonDecode(response.body);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final Completer<GoogleMapController> _controller = Completer();
|
final Completer<GoogleMapController> _controller = Completer();
|
||||||
|
bool? _barFilterValue = true;
|
||||||
|
bool? _restaurantFilterValue = true;
|
||||||
|
bool? _cafeFilterValue = true;
|
||||||
|
dynamic _priceFilterValue = 3;
|
||||||
LocationData? _currentPosition;
|
LocationData? _currentPosition;
|
||||||
|
|
||||||
final TextEditingController _searchController = TextEditingController();
|
|
||||||
|
|
||||||
static const CameraPosition _kGooglePlex = CameraPosition(
|
static const CameraPosition _kGooglePlex = CameraPosition(
|
||||||
target: LatLng(59.325027,18.068516),
|
target: LatLng(59.325027, 18.068516),
|
||||||
zoom: 14.4746,
|
zoom: 14.4746,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -66,46 +72,41 @@ class MapState extends State<Map> {
|
||||||
void createBottomSheet(String venueName) async {
|
void createBottomSheet(String venueName) async {
|
||||||
var webScraper = WebScraper();
|
var webScraper = WebScraper();
|
||||||
await webScraper.getWebsiteData(venueName);
|
await webScraper.getWebsiteData(venueName);
|
||||||
Scaffold.of(context).showBottomSheet<void>(
|
Scaffold.of(context).showBottomSheet<void>(((context) {
|
||||||
((context) {
|
return Container(
|
||||||
return Container(
|
height: 420,
|
||||||
height: 420,
|
color: Colors.white,
|
||||||
color: Colors.white,
|
child: Center(
|
||||||
child: Center(
|
child: Column(
|
||||||
child: Column(
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisSize: MainAxisSize.min,
|
||||||
mainAxisSize: MainAxisSize.min,
|
children: <Widget>[
|
||||||
children: <Widget>[
|
/*const Text('BottomSheet'),
|
||||||
/*const Text('BottomSheet'),
|
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
child: const Text('Close BottomSheet'),
|
child: const Text('Close BottomSheet'),
|
||||||
onPressed: () {Navigator.pop(context);})*/
|
onPressed: () {Navigator.pop(context);})*/
|
||||||
Container(
|
Container(
|
||||||
child: Text(webScraper.openingHoursThisWeek.length.toString()),
|
child: Text(webScraper.openingHoursThisWeek.length.toString()),
|
||||||
),
|
),
|
||||||
|
],
|
||||||
],
|
)),
|
||||||
)
|
);
|
||||||
),
|
}));
|
||||||
);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
initialize() {
|
initialize() {
|
||||||
List<Venue> allVenues = globals.VENUES;
|
List<Venue> allVenues = globals.VENUES;
|
||||||
for(var venue in allVenues) {
|
for (var venue in allVenues) {
|
||||||
Marker marker = Marker(
|
Marker marker = Marker(
|
||||||
markerId: MarkerId(venue.venueID.toString()),
|
markerId: MarkerId(venue.venueID.toString()),
|
||||||
position: venue.position,
|
position: venue.position,
|
||||||
onTap: () => createBottomSheet(venue.venueName),
|
onTap: () => createBottomSheet(venue.venueName),
|
||||||
icon: venue.drawIconColor(),
|
icon: venue.drawIconColor(),
|
||||||
);
|
);
|
||||||
markersList.add(marker);
|
markersList.add(marker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Future<LocationData> _getLocationPermission() async {
|
Future<LocationData> _getLocationPermission() async {
|
||||||
Location location = Location();
|
Location location = Location();
|
||||||
|
|
||||||
|
@ -145,44 +146,143 @@ class MapState extends State<Map> {
|
||||||
final Mode _mode = Mode.fullscreen;
|
final Mode _mode = Mode.fullscreen;
|
||||||
|
|
||||||
int currentIndex = 0;
|
int currentIndex = 0;
|
||||||
final screens =[
|
final screens = [
|
||||||
Map(),
|
Map(),
|
||||||
];
|
];
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
|
centerTitle: true,
|
||||||
|
title: const Text("Sun chasers"),
|
||||||
key: homeSacffoldKey,
|
key: homeSacffoldKey,
|
||||||
//leading: IconButton(icon: Icon(Icons.search), onPressed:() {},),
|
<<<<<<< HEAD
|
||||||
actions: <Widget>[
|
actions: <Widget>[createFilterMenuButton()],
|
||||||
IconButton(icon: const Icon(Icons.search), onPressed:() {
|
|
||||||
},),
|
|
||||||
],
|
|
||||||
title: TextFormField(
|
|
||||||
controller: _searchController,
|
|
||||||
textCapitalization: TextCapitalization.words,
|
|
||||||
decoration: const InputDecoration(hintText: 'Find your place'),
|
|
||||||
onChanged: (value) {
|
|
||||||
print(value);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
backgroundColor: const Color.fromARGB(255, 190, 146, 160),
|
backgroundColor: const Color.fromARGB(255, 190, 146, 160),
|
||||||
),
|
),
|
||||||
|
body: Stack(
|
||||||
|
=======
|
||||||
|
backgroundColor: const Color.fromARGB(255, 190, 146, 160),
|
||||||
|
),
|
||||||
|
drawer : Drawer(
|
||||||
|
child: Container(
|
||||||
|
child: globals.LOGGED_IN_USER.userID == 0 ? buildDrawerSignedOut(context) : buildDrawerSignedIn(context),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
body: Stack (
|
body: Stack (
|
||||||
|
>>>>>>> master
|
||||||
children: [
|
children: [
|
||||||
GoogleMap(
|
GoogleMap(
|
||||||
mapType: MapType.normal,
|
|
||||||
|
mapType: MapType.normal,
|
||||||
initialCameraPosition: _kGooglePlex,
|
initialCameraPosition: _kGooglePlex,
|
||||||
markers: markersList.map((e) => e).toSet(),
|
markers: markersList.map((e) => e).toSet(),
|
||||||
onMapCreated: (GoogleMapController controller) {
|
onMapCreated: (GoogleMapController controller) {
|
||||||
_controller.complete(controller);
|
_controller.complete(controller);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
// ElevatedButton(onPressed: () {} //_handelPressButton
|
// ElevatedButton(onPressed: () {} //_handelPressButton
|
||||||
// ,child: const Text("Search Placses"))
|
// ,child: const Text("Search Placses"))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
PopupMenuButton<dynamic> createFilterMenuButton() {
|
||||||
|
return PopupMenuButton(
|
||||||
|
icon: Icon(Icons.filter_list),
|
||||||
|
iconSize: 40,
|
||||||
|
itemBuilder: (context) => [
|
||||||
|
const PopupMenuItem(
|
||||||
|
child: Text(
|
||||||
|
"Filters",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
padding: EdgeInsets.only(left: 60),
|
||||||
|
),
|
||||||
|
createCheckBoxes(),
|
||||||
|
createPriceSlider(),
|
||||||
|
PopupMenuItem(
|
||||||
|
child: ButtonBar(
|
||||||
|
alignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed:
|
||||||
|
null, // TODO: Fixa så att kartan filtreras när man klickar på 'Apply Filters'
|
||||||
|
child: Text(
|
||||||
|
"Apply Filters",
|
||||||
|
style: TextStyle(color: Colors.black),
|
||||||
|
),
|
||||||
|
style: ButtonStyle(
|
||||||
|
backgroundColor: MaterialStateProperty.all<Color>(
|
||||||
|
globals.BUTTONCOLOR)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
))
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creates the checkboxes for the filter menu
|
||||||
|
PopupMenuItem<dynamic> createCheckBoxes() {
|
||||||
|
return PopupMenuItem(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8),
|
||||||
|
child: Expanded(
|
||||||
|
child: Column(
|
||||||
|
|
||||||
|
children: [
|
||||||
|
Divider(color: Colors.black,),
|
||||||
|
StatefulBuilder(
|
||||||
|
builder: (BuildContext context, StateSetter setState) {
|
||||||
|
return CheckboxListTile(
|
||||||
|
value: _barFilterValue,
|
||||||
|
onChanged: (bool? newValue) {
|
||||||
|
setState(() {
|
||||||
|
_barFilterValue = newValue;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
title: const Icon(
|
||||||
|
Icons.sports_bar,
|
||||||
|
color: Colors.orange,
|
||||||
|
));
|
||||||
|
}),
|
||||||
|
StatefulBuilder(
|
||||||
|
builder: (BuildContext context, StateSetter setState) {
|
||||||
|
return CheckboxListTile(
|
||||||
|
value: _restaurantFilterValue,
|
||||||
|
onChanged: (bool? newValue) {
|
||||||
|
setState(() {
|
||||||
|
_restaurantFilterValue = newValue;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
title: Icon(
|
||||||
|
Icons.restaurant,
|
||||||
|
color: Colors.blueGrey[200],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
//Cafe checkbox
|
||||||
|
|
||||||
|
StatefulBuilder(
|
||||||
|
builder: (BuildContext context, StateSetter setState) {
|
||||||
|
return CheckboxListTile(
|
||||||
|
value: _cafeFilterValue,
|
||||||
|
onChanged: (bool? newValue) {
|
||||||
|
setState(() => _cafeFilterValue = newValue);
|
||||||
|
},
|
||||||
|
title: Icon(
|
||||||
|
Icons.coffee,
|
||||||
|
color: Colors.brown[400],
|
||||||
|
));
|
||||||
|
}),
|
||||||
|
|
||||||
|
],
|
||||||
|
=======
|
||||||
floatingActionButton: Padding(
|
floatingActionButton: Padding(
|
||||||
padding: const EdgeInsets.only(top: 100.0),
|
padding: const EdgeInsets.only(top: 100.0),
|
||||||
child: FloatingActionButton(
|
child: FloatingActionButton(
|
||||||
|
@ -192,31 +292,66 @@ class MapState extends State<Map> {
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => const SettingsPage()));
|
builder: (context) => const SettingsPage()));
|
||||||
},
|
},
|
||||||
backgroundColor: Colors.purple,
|
backgroundColor: Colors.blueAccent,
|
||||||
child: const Icon(Icons.filter_alt),
|
child: const Icon(Icons.filter_alt),
|
||||||
),
|
),
|
||||||
|
>>>>>>> master
|
||||||
),
|
),
|
||||||
floatingActionButtonLocation: FloatingActionButtonLocation.endTop,
|
),
|
||||||
);
|
),
|
||||||
}
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
PopupMenuItem<dynamic> createPriceSlider() {
|
||||||
|
return PopupMenuItem(
|
||||||
|
child: StatefulBuilder(
|
||||||
|
builder: (BuildContext context, StateSetter setState) {
|
||||||
|
return SfSlider(
|
||||||
|
value: _priceFilterValue,
|
||||||
|
onChanged: (dynamic newValue) {
|
||||||
|
setState((() => _priceFilterValue = newValue));
|
||||||
|
},
|
||||||
|
min: 1,
|
||||||
|
max: 3,
|
||||||
|
showTicks: true,
|
||||||
|
interval: 1,
|
||||||
|
activeColor: Colors.blue,
|
||||||
|
showLabels: true,
|
||||||
|
stepSize: 1.0,
|
||||||
|
labelFormatterCallback: (dynamic value, String formattedText) {
|
||||||
|
switch (value) {
|
||||||
|
case 1:
|
||||||
|
return '\$';
|
||||||
|
case 2:
|
||||||
|
return '\$\$';
|
||||||
|
case 3:
|
||||||
|
return '\$\$\$';
|
||||||
|
}
|
||||||
|
return value.toString();
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _gotoLocation(double lat, double lng) async {
|
Future<void> _gotoLocation(double lat, double lng) async {
|
||||||
final GoogleMapController controller = await _controller.future;
|
final GoogleMapController controller = await _controller.future;
|
||||||
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(target: LatLng(lat,lng), zoom: 15)));
|
controller.animateCamera(CameraUpdate.newCameraPosition(
|
||||||
|
CameraPosition(target: LatLng(lat, lng), zoom: 15)));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _boxes(double lat, double lng, String resturantName) {
|
Widget _boxes(double lat, double lng, String resturantName) {
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () { _gotoLocation(lat, lng);},
|
onTap: () {
|
||||||
|
_gotoLocation(lat, lng);
|
||||||
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
child: FittedBox(
|
child: FittedBox(
|
||||||
child: Material(
|
child: Material(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
elevation: 14.0,
|
elevation: 14.0,
|
||||||
borderRadius: BorderRadius.circular(24.0),
|
borderRadius: BorderRadius.circular(24.0),
|
||||||
shadowColor: Color(0x802196F3),
|
shadowColor: Color(0x802196F3),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Container(
|
Container(
|
||||||
|
@ -225,21 +360,12 @@ class MapState extends State<Map> {
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: new BorderRadius.circular(24.0),
|
borderRadius: new BorderRadius.circular(24.0),
|
||||||
child: const Image(
|
child: const Image(
|
||||||
image: AssetImage('assets/images/bild.png')
|
image: AssetImage('assets/images/bild.png')),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Container(
|
]),
|
||||||
child: Padding(
|
)),
|
||||||
padding: const EdgeInsets.all(8.0),
|
),
|
||||||
child: Text(resturantName),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,7 +378,7 @@ class MapState extends State<Map> {
|
||||||
zoom: 14.4746)));
|
zoom: 14.4746)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Future<void> _handelPressButton() async {
|
/* Future<void> _handelPressButton() async {
|
||||||
|
|
||||||
Prediction? p = await PlacesAutocomplete.show(
|
Prediction? p = await PlacesAutocomplete.show(
|
||||||
context: context,
|
context: context,
|
||||||
|
@ -291,4 +417,149 @@ class MapState extends State<Map> {
|
||||||
googleMapController.animateCamera(CameraUpdate.newLatLngZoom(LatLng(lat,lng), 14.0));
|
googleMapController.animateCamera(CameraUpdate.newLatLngZoom(LatLng(lat,lng), 14.0));
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
|
||||||
|
Widget buildDrawerSignedIn(BuildContext context){
|
||||||
|
return Drawer(
|
||||||
|
child: ListView(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
children: [
|
||||||
|
DrawerHeader(
|
||||||
|
decoration: const BoxDecoration(color: Color.fromARGB(255, 190, 146, 160)),
|
||||||
|
child: Column(children: const <Widget>[
|
||||||
|
Text('Sun Chaser',
|
||||||
|
style :TextStyle(fontSize: 32),
|
||||||
|
),
|
||||||
|
|
||||||
|
SizedBox(height: 30),
|
||||||
|
Icon(Icons.account_box_rounded),
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
),
|
||||||
|
|
||||||
|
),
|
||||||
|
|
||||||
|
ListTile(
|
||||||
|
leading: Icon(Icons.logout),
|
||||||
|
title: Text('Sign out'),
|
||||||
|
onTap:(){
|
||||||
|
globals.LOGGED_IN_USER = User(0, "", "");
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) => HomePage()), //Replace Container() with call to Map-page.
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
leading: Icon(Icons.thumb_up_alt),
|
||||||
|
title: Text('Give feedback'),
|
||||||
|
onTap:(){
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => FormForFeedback(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
leading: Icon(Icons.settings),
|
||||||
|
title: Text('Settings'),
|
||||||
|
onTap:(){
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => SettingsPage(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget buildDrawerSignedOut(BuildContext context){
|
||||||
|
return Drawer(
|
||||||
|
child: ListView(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
children: [
|
||||||
|
DrawerHeader(
|
||||||
|
decoration: const BoxDecoration(color: Color.fromARGB(255, 190, 146, 160)),
|
||||||
|
child: Column(children: const <Widget>[
|
||||||
|
Text('Sun Chaser',
|
||||||
|
style :TextStyle(fontSize: 32),
|
||||||
|
),
|
||||||
|
|
||||||
|
SizedBox(height: 30),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
ListTile(
|
||||||
|
leading: Icon(Icons.account_box_rounded),
|
||||||
|
title: Text('Create account'),
|
||||||
|
onTap:(){
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => CreateAccountPage(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
leading: Icon(Icons.login),
|
||||||
|
title: Text('Sign in'),
|
||||||
|
onTap:(){
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => SignInPage(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},),
|
||||||
|
ListTile(
|
||||||
|
leading: Icon(Icons.thumb_up_alt),
|
||||||
|
title: Text('Give feedback'),
|
||||||
|
onTap:(){
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => FormForFeedback(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
leading: Icon(Icons.settings),
|
||||||
|
title: Text('Settings'),
|
||||||
|
onTap:(){
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => SettingsPage(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class _Marker {
|
||||||
|
|
||||||
|
var Plats_1;
|
||||||
|
var Gatunr_1;
|
||||||
|
var coordinates;
|
||||||
|
|
||||||
|
_Marker(this.Plats_1, this.Gatunr_1, this.coordinates);
|
||||||
|
|
||||||
|
}
|
||||||
|
>>>>>>> master
|
||||||
|
|
|
@ -50,7 +50,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||||
'Settings',
|
'Settings',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 30,
|
fontSize: 30,
|
||||||
color: Colors.grey,
|
color: Colors.white,
|
||||||
shadows: <Shadow>[
|
shadows: <Shadow>[
|
||||||
Shadow(
|
Shadow(
|
||||||
offset: Offset(2, 2),
|
offset: Offset(2, 2),
|
||||||
|
@ -104,7 +104,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||||
title: const Text('Restaurant'),
|
title: const Text('Restaurant'),
|
||||||
),
|
),
|
||||||
SettingsTile(
|
SettingsTile(
|
||||||
title: const Text(""),
|
title: const Text("Price"),
|
||||||
value: Row(
|
value: Row(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
|
@ -119,17 +119,17 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||||
duration: Duration(milliseconds: 1000),
|
duration: Duration(milliseconds: 1000),
|
||||||
behavior: SnackBarBehavior.floating,
|
behavior: SnackBarBehavior.floating,
|
||||||
content: Text('Selected £'),
|
content: Text('Selected £'),
|
||||||
));
|
),);
|
||||||
}else{
|
}else{
|
||||||
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
|
||||||
duration: Duration(milliseconds: 1000),
|
duration: Duration(milliseconds: 1000),
|
||||||
content: Text('Unselected £'),
|
content: Text('Unselected £'),
|
||||||
behavior: SnackBarBehavior.floating,
|
behavior: SnackBarBehavior.floating,
|
||||||
));
|
),);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
print("Tapped single dollarSign");
|
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
color: _colorContainerLow,
|
color: _colorContainerLow,
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_applicationdemo/BottomNavPage.dart';
|
import 'package:flutter_applicationdemo/BottomNavPage.dart';
|
||||||
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
import 'package:flutter_applicationdemo/mysql.dart';
|
import 'package:flutter_applicationdemo/mysql.dart';
|
||||||
|
|
||||||
import 'package:flutter_applicationdemo/HomePage.dart';
|
import 'package:flutter_applicationdemo/HomePage.dart';
|
||||||
|
@ -53,10 +53,12 @@ class _CreateAccountPageState extends State<CreateAccountPage> {
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
createTitleText(),
|
createTitleText(),
|
||||||
|
const SizedBox(height: 50),
|
||||||
Text(
|
Text(
|
||||||
"Create Log in:",
|
"Create Log in:",
|
||||||
style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
|
style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
|
||||||
),
|
),
|
||||||
|
const SizedBox(height: 10),
|
||||||
createUsernameField(),
|
createUsernameField(),
|
||||||
createEmailField(),
|
createEmailField(),
|
||||||
createPasswordField(),
|
createPasswordField(),
|
||||||
|
@ -64,7 +66,6 @@ class _CreateAccountPageState extends State<CreateAccountPage> {
|
||||||
padding: const EdgeInsets.only(top: 20),
|
padding: const EdgeInsets.only(top: 20),
|
||||||
child: createCreateAccountButton(),
|
child: createCreateAccountButton(),
|
||||||
),
|
),
|
||||||
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -72,21 +73,14 @@ class _CreateAccountPageState extends State<CreateAccountPage> {
|
||||||
Text createTitleText() {
|
Text createTitleText() {
|
||||||
return Text(
|
return Text(
|
||||||
'Sun Chasers',
|
'Sun Chasers',
|
||||||
style: TextStyle(
|
style: GoogleFonts.libreBaskerville(
|
||||||
fontSize: 50,
|
fontSize: 35,
|
||||||
color: textColor,
|
color: globals.TEXTCOLOR,
|
||||||
fontFamily: 'Sacramento',
|
|
||||||
shadows: const <Shadow>[
|
|
||||||
Shadow(
|
|
||||||
offset: Offset(2, 2),
|
|
||||||
blurRadius: 10.0,
|
|
||||||
color: Color.fromARGB(255, 0, 0, 0),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
InputField createUsernameField() {
|
InputField createUsernameField() {
|
||||||
return InputField(
|
return InputField(
|
||||||
text: "Username:",
|
text: "Username:",
|
||||||
|
|
16
pubspec.lock
16
pubspec.lock
|
@ -374,7 +374,7 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.3"
|
version: "3.1.3"
|
||||||
intl:
|
intl:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
|
@ -672,6 +672,20 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
syncfusion_flutter_core:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: syncfusion_flutter_core
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "20.1.57"
|
||||||
|
syncfusion_flutter_sliders:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: syncfusion_flutter_sliders
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "20.1.57"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -48,7 +48,8 @@ dependencies:
|
||||||
font_awesome_flutter: ^9.2.0
|
font_awesome_flutter: ^9.2.0
|
||||||
provider: ^5.0.0
|
provider: ^5.0.0
|
||||||
webview_flutter: ^3.0.0
|
webview_flutter: ^3.0.0
|
||||||
|
syncfusion_flutter_sliders: ^20.1.57
|
||||||
|
intl: ^0.17.0
|
||||||
#Google Sign-in
|
#Google Sign-in
|
||||||
firebase_auth: ^1.1.4
|
firebase_auth: ^1.1.4
|
||||||
google_sign_in: ^5.0.3
|
google_sign_in: ^5.0.3
|
||||||
|
@ -56,6 +57,7 @@ dependencies:
|
||||||
mysql1: ^0.19.0
|
mysql1: ^0.19.0
|
||||||
html: ^0.15.0
|
html: ^0.15.0
|
||||||
|
|
||||||
|
|
||||||
flutter_native_splash:
|
flutter_native_splash:
|
||||||
background_image: assets/images/outdoor.png
|
background_image: assets/images/outdoor.png
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user