From f7a6dbf8aca685c4692a281595c095ffb1e83bd8 Mon Sep 17 00:00:00 2001 From: Supermjork Date: Tue, 26 Dec 2023 17:36:46 +0200 Subject: [PATCH] Quantified Payload Items (Sending not implemented yet) --- lib/albut.dart | 45 +++++++++++++++++++++++++++++++++++ lib/input_data.dart | 58 ++++++++++++++++++++++++++++++++++++++++----- pubspec.lock | 24 +++++++++++++++++++ pubspec.yaml | 1 + 4 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 lib/albut.dart diff --git a/lib/albut.dart b/lib/albut.dart new file mode 100644 index 0000000..f5f1d04 --- /dev/null +++ b/lib/albut.dart @@ -0,0 +1,45 @@ +import 'dart:convert'; +import 'package:http/http.dart' as http; + +Future createAlbum(String title) async { + final response = await http.post( + Uri.parse('https://jsonplaceholder.typicode.com/albums'), + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + }, + body: jsonEncode({ + 'title': title, + }), + ); + + if (response.statusCode == 201) { + // If the server did return a 201 CREATED response, + // then parse the JSON. + return Album.fromJson(jsonDecode(response.body) as Map); + } else { + // If the server did not return a 201 CREATED response, + // then throw an exception. + throw Exception('Failed to create album.'); + } +} + +class Album { + final int id; + final String title; + + const Album({required this.id, required this.title}); + + factory Album.fromJson(Map json) { + return switch (json) { + { + 'id': int id, + 'title': String title, + } => + Album( + id: id, + title: title, + ), + _ => throw const FormatException('Failed to load album.'), + }; + } +} \ No newline at end of file diff --git a/lib/input_data.dart b/lib/input_data.dart index b5e1a99..539adb6 100644 --- a/lib/input_data.dart +++ b/lib/input_data.dart @@ -11,9 +11,13 @@ class InputData extends StatefulWidget { class _InputDataState extends State { late String selectedColor = 'Blue'; // Default color late String selectedLine = '1'; // Default line + late String selectedDirection = 'Raml'; // Default Station Direction + // Date and Time Info, FULLY DateTime now = DateTime.now(); - String formattedDate = DateFormat('kk:mm:ss \n EEE d MMM').format(DateTime.now()); + + // What will be displayed to the user + String userFormattedString = DateFormat('kk:mm EEE dd MMM').format(DateTime.now()); @override Widget build(BuildContext context) { @@ -72,23 +76,65 @@ class _InputDataState extends State { ), ], ), + + const SizedBox(height: 30), + + const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text("Direction:"), + SizedBox(width: 20), + ], + ), + + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + DropdownButton( + value: selectedDirection, + items: ['Raml', 'Victoria'].map((String value) { + return DropdownMenuItem( + value: value, + child: Text(value), + ); + }).toList(), + onChanged: (String? newEnd) { + setState(() { + selectedDirection = newEnd ?? 'Victoria'; // Set a default value if newLine is null + }); + }, + ), + ], + ), const SizedBox(height: 30), InkWell( onTap: () { // Grab Data from Dropdowns - selectedColor; + selectedColor; // selectedLine; + + // Conforming by db standard of boolean + bool payloadDirection; + + if (selectedDirection == 'Raml') { + payloadDirection = true; + } else { + payloadDirection = false; + } // Grab Time - formattedDate; + now.weekday; // Day (1 -> 7) !! Starts Monday !! + now.hour; // Hour (0 -> 23) + now.minute; // Minute (0 -> 59) + now.second; // Second (0 -> 59) // Send //lingy plez //prompting of submission - showAlertDialog(context, selectedLine, selectedColor, formattedDate); + showAlertDialog(context, selectedLine, selectedColor, selectedDirection, userFormattedString); }, child: Container( padding: const EdgeInsets.all(20.0), @@ -131,7 +177,7 @@ class _InputDataState extends State { } } -showAlertDialog(BuildContext context, String chosenLine, String chosenColour, String submissionDate) { +showAlertDialog(BuildContext context, String chosenLine, String chosenColour, String chosenDir, String submissionDate) { // set up the button Widget okButton = TextButton( @@ -144,7 +190,7 @@ showAlertDialog(BuildContext context, String chosenLine, String chosenColour, St // set up the AlertDialog AlertDialog alert = AlertDialog( title: const Text("Submitted (Cached?) Info"), - content: Text("Tram Colour: $chosenColour\nChosen Line: $chosenLine\nSubmitted On:\n$submissionDate"), + content: Text("Tram Colour: $chosenColour\n\nChosen Line: $chosenLine\n\nDirection: $chosenDir\n\nSubmitted On: $submissionDate"), actions: [ okButton, ], diff --git a/pubspec.lock b/pubspec.lock index 538754a..33a66a3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -75,6 +75,22 @@ packages: description: flutter source: sdk version: "0.0.0" + http: + dependency: "direct main" + description: + name: http + sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" intl: dependency: "direct main" description: @@ -176,6 +192,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.1" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" vector_math: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index dccd6c1..ef6d96f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,7 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 intl: ^0.19.0 + http: ^1.1.2 dev_dependencies: flutter_test: