diff --git a/lib/sell.dart b/lib/sell.dart index 741d158..1886af5 100644 --- a/lib/sell.dart +++ b/lib/sell.dart @@ -7,6 +7,7 @@ import 'package:currency_text_input_formatter/currency_text_input_formatter.dart import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; import 'package:ruswipeshare/auth_gate.dart'; import 'package:intl/intl.dart'; +import 'package:ruswipeshare/buy.dart'; import 'package:ruswipeshare/meetings.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; @@ -32,9 +33,9 @@ Map values = { class _SellScreenState extends State { DateFormat dateFormat = DateFormat("HH:mm a"); - String startTime = 'Start Time'; + String startTime = '??:??'; DateTime startTimeTime = DateTime.now(); - String endTime = 'End Time'; + String endTime = '??:??'; DateTime endTimeTime = DateTime.now(); bool? is24HoursFormat; double price = 0; @@ -42,182 +43,228 @@ class _SellScreenState extends State { @override Widget build(BuildContext context) { bool is24HoursFormat = MediaQuery.of(context).alwaysUse24HourFormat; + dateFormat = is24HoursFormat ? DateFormat("HH:mm a") : DateFormat("HH:mm"); return Scaffold( - resizeToAvoidBottomInset: true, - body: Padding( - padding: const EdgeInsets.fromLTRB(0, 8, 0, 0), - child: - Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - child: - Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Row( + body: Column(children: [ + Container( + padding: EdgeInsets.only(top: 10, left: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, children: [ - Expanded( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.store_mall_directory, - color: Colors.red, - size: 40, + const Icon( + Icons.store_mall_directory, + color: Colors.red, + size: 40, + ), + const Text( + 'Place', + style: TextStyle( + fontSize: 30, + ), + ), + ], + ), + ), + SizedBox( + height: 200, + child: ListView.builder( + physics: BouncingScrollPhysics(), + itemCount: values.length, + itemBuilder: (context, index) => CheckboxListTile( + visualDensity: VisualDensity.compact, + title: Text( + values.keys.elementAt(index), + style: TextStyle(fontSize: 18), + ), + value: values.values.elementAt(index), + onChanged: (bool? value) { + setState(() { + values[values.keys.elementAt(index)] = value!; + }); + }, + ), + ), + // ) + ), + Container( + padding: EdgeInsets.only(top: 10, left: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + const Icon( + Icons.access_time, + color: Colors.red, + size: 40, + ), + const Text( + 'Time', + style: TextStyle( + fontSize: 30, ), - Text( - 'Place', - style: TextStyle( - fontSize: 30, + ), + Expanded( + child: Container( + padding: EdgeInsets.only(top: 15), + child: Container( + padding: EdgeInsets.only(right: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + InkWell( + onTap: () { + DatePicker.showDateTimePicker(context, + showTitleActions: true, + minTime: DateTime.now(), + onChanged: (date) {}, onConfirm: (date) { + setState(() { + endTimeTime = date; + endTime = dateFormat.format(date); + }); + }, + currentTime: DateTime.now(), + locale: LocaleType.en); + }, + child: Container( + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.0), + border: Border.all( + width: 2, + color: CustomMaterialColor(240, 240, 240) + .mdColor)), + child: Text( + endTime, + style: TextStyle( + fontSize: 24, + ), + ), + ), + ), + Text( + " - ", + style: TextStyle(fontSize: 20), + ), + InkWell( + onTap: () { + DatePicker.showDateTimePicker(context, + showTitleActions: true, + minTime: DateTime.now(), + onChanged: (date) {}, onConfirm: (date) { + setState(() { + startTimeTime = date; + startTime = dateFormat.format(date); + }); + }, + currentTime: DateTime.now(), + locale: LocaleType.en); + }, + child: Container( + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.0), + border: Border.all( + width: 2, + color: CustomMaterialColor(240, 240, 240) + .mdColor)), + child: Text( + startTime, + style: TextStyle( + fontSize: 24, + ), + ), + ), + ), + ], + ), ), ), - ], - )) - ], - ), - ConstrainedBox( - constraints: const BoxConstraints.expand(height: 250), - child: ListView.builder( - physics: BouncingScrollPhysics(), - itemCount: values.length, - itemBuilder: (context, index) => CheckboxListTile( - title: Text(values.keys.elementAt(index)), - value: values.values.elementAt(index), - onChanged: (bool? value) { - setState(() { - values[values.keys.elementAt(index)] = value!; - }); - }, - ), - ), - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: const [ - Icon(Icons.access_time, color: Colors.red), - Text('Time'), - ], - ), - SizedBox( - height: 100, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Text( - startTime, - style: TextStyle(fontSize: 35), - ), - Text( - "to", - style: TextStyle(fontSize: 20), - ), - Text( - endTime, - style: TextStyle(fontSize: 35), ), ], - ), - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, + )), + Container( + padding: EdgeInsets.only(left: 10, top: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, children: [ - ElevatedButton( - onPressed: () async { - DatePicker.showDateTimePicker(context, - showTitleActions: true, - minTime: DateTime.now(), onChanged: (date) { - print('change $date'); - }, onConfirm: (date) { - setState(() { - startTimeTime = date; - startTime = dateFormat.format(date); - print('confirm $date'); - }); - }, currentTime: DateTime.now(), locale: LocaleType.en); - // final TimeOfDay? picked = await showTimePicker( - // context: context, - // initialTime: TimeOfDay.fromDateTime(startTimeTime), - // ); - // if (picked != null && picked != TimeOfDay.fromDateTime(startTimeTime)) { - // setState(() { - // startTimeTime = DateTime.fromMicrosecondsSinceEpoch(picked.hour * 60 * 60 * 1000000 + picked.minute * 60 * 1000000, isUtc: true); - // startTime = startTimeTime.hour.toString() + ":" + startTimeTime.minute.toString() + ((is24HoursFormat) ? "" : ((startTimeTime.hour > 12) ? "PM" : "AM")); - // }); - // } - }, - child: const Text('Select Start Time'), + const Icon( + Icons.attach_money, + color: Colors.red, + size: 40, ), - ElevatedButton( - onPressed: () async { - DatePicker.showDateTimePicker(context, - showTitleActions: true, - minTime: DateTime.now(), onChanged: (date) { - print('change $date'); - }, onConfirm: (date) { - setState(() { - endTimeTime = date; - endTime = dateFormat.format(date); - print('confirm $date'); - }); - }, currentTime: DateTime.now(), locale: LocaleType.en); - // final TimeOfDay? picked = await showTimePicker( - // context: context, - // initialTime: TimeOfDay.fromDateTime(endTimeTime), - // ); - // if (picked != null && picked != TimeOfDay.fromDateTime(endTimeTime)) { - // setState(() { - // endTimeTime = DateTime.fromMicrosecondsSinceEpoch(picked.hour * 60 * 60 * 1000000 + picked.minute * 60 * 1000000, isUtc: true); - // endTime = endTimeTime.hour.toString() + ":" + endTimeTime.minute.toString() + ((is24HoursFormat) ? "" : ((endTimeTime.hour > 12) ? "PM" : "AM")); - // }); - // } - }, - child: const Text('Select End Time'), + const Text( + 'Money', + style: TextStyle( + fontSize: 30, + ), + ), + Expanded( + child: Container( + padding: EdgeInsets.only(top: 15), + child: Container( + padding: EdgeInsets.only(right: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Container( + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.0), + border: Border.all( + width: 2, + color: CustomMaterialColor(240, 240, 240) + .mdColor)), + child: SizedBox( + width: 150, + child: TextField( + keyboardType: TextInputType.number, + textAlign: TextAlign.center, + style: + TextStyle(color: Colors.white, fontSize: 24), + controller: priceController, + decoration: InputDecoration( + contentPadding: EdgeInsets.zero, + hintText: 'Price', + hintStyle: TextStyle( + color: Colors.white24, fontSize: 24), + ), + ), + ), + ), + ], + ), + ), + ), ), ], ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: const [ - Icon(Icons.attach_money, color: Colors.red), - Text('Cost'), - ], - ), - SizedBox( - width: 150, - child: TextField( - keyboardType: TextInputType.number, - textAlign: TextAlign.center, - style: TextStyle(color: Colors.white, fontSize: 30), - controller: priceController, - decoration: InputDecoration( - border: OutlineInputBorder(), - hintText: 'Price', - hintStyle: TextStyle(color: Colors.white24, fontSize: 30), + ), + Expanded( + child: Center( + child: Container( + child: ElevatedButton( + onPressed: () { + List locations = []; + User? user = auth.currentUser; + values.forEach((key, value) { + if (value == true) locations.add(key); + }); + if (user != null) { + Seller seller = Seller( + user.displayName, + user.uid, + locations, + TimeRange(Timestamp.fromDate(startTimeTime), + Timestamp.fromDate(endTimeTime)), + double.parse(priceController.text)); + addSeller(seller); + } + }, + child: const Text('Submit Sell Request'), ), ), ), - ElevatedButton( - onPressed: () { - List locations = []; - User? user = auth.currentUser; - values.forEach((key, value) { - if (value == true) locations.add(key); - }); - if (user != null) { - Seller seller = Seller( - user.displayName, - user.uid, - locations, - TimeRange(Timestamp.fromDate(startTimeTime), - Timestamp.fromDate(endTimeTime)), - double.parse(priceController.text)); - addSeller(seller); - } - }, - style: ButtonStyle( - backgroundColor: - MaterialStateColor.resolveWith((states) => Colors.blue), - ), - child: const Text('Submit Sell Request'), - ), - ]), - ), + ), + ]), ); } }