This commit is contained in:
Hitesh Ale
2023-02-26 15:35:58 -05:00
8 changed files with 223 additions and 212 deletions

View File

@@ -25,7 +25,7 @@ class AuthGate extends StatelessWidget {
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return SignInScreen(
return SignInScreen(
providerConfigs: const [
EmailProviderConfiguration(),
],

View File

@@ -6,6 +6,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_stripe/flutter_stripe.dart';
import 'package:ruswipeshare/main.dart';
import 'package:flutter_email_sender/flutter_email_sender.dart';
import 'package:intl/intl.dart';
import 'meetings.dart';
enum CampusState { campuses, list_options, offers }
@@ -68,6 +71,8 @@ class BuyScreen extends StatefulWidget {
class _BuyScreenState extends State<BuyScreen> {
CampusState _currentState = CampusState.campuses;
List<String> _diningOptions = List.empty();
List<Seller> _sellersAtDiningHall = [];
String _selectedLocation = "";
@override
Widget build(BuildContext context) {
@@ -352,157 +357,199 @@ class _BuyScreenState extends State<BuyScreen> {
itemCount: 30,
padding: EdgeInsets.fromLTRB(10, 0, 10, 0),
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
showSheet(context, index);
// showDialog(
// context: context,
// builder: (BuildContext context) => Dialog(
// backgroundColor: Theme.of(context).scaffoldBackgroundColor,
// shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(20))),
// child: Padding(
// padding: const EdgeInsets.all(8.0),
// child: Column(
// mainAxisSize: MainAxisSize.min,
// mainAxisAlignment: MainAxisAlignment.center,
// children: <Widget>[
// const Text('Transaction Details'),
// const SizedBox(height: 15),
// TextButton(
// onPressed: () {
// Navigator.pop(context);
// },
// child: const Text('Close'),
// ),
// ],
// ),
// )));
// // Dialogs.materialDialog(
// // color: Theme.of(context).scaffoldBackgroundColor,
// // customView: const TransactionDetails(),
// // customViewPosition:
// // CustomViewPosition.BEFORE_ACTION,
// // msgAlign: TextAlign.center,
// // msg:
// // 'Please read all the information below before purchasing.\n',
// // title: 'Transaction Details',
// // context: context,
// // actions: [
// // IconsOutlineButton(
// // onPressed: () {},
// // text: 'Cancel',
// // iconData: Icons.cancel_outlined,
// // color: Theme.of(context).primaryColor,
// // textStyle: TextStyle(
// // color: CustomMaterialColor(240, 240, 240)
// // .mdColor,
// // ),
// // iconColor: CustomMaterialColor(240, 240, 240)
// // .mdColor),
// // IconsButton(
// // onPressed: () {},
// // text: 'Purchase',
// // iconData: Icons.done,
// // color: Colors.green,
// // textStyle: TextStyle(
// // color: CustomMaterialColor(240, 240, 240)
// // .mdColor,
// // ),
// // iconColor: CustomMaterialColor(240, 240, 240)
// // .mdColor),
// // ],
// // );
},
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: CustomMaterialColor(240, 240, 240)
.mdColor,
width: 2),
borderRadius:
const BorderRadius.all(Radius.circular(10))),
margin: const EdgeInsets.all(4),
height: 120,
child: ClipRRect(
borderRadius:
const BorderRadius.all(Radius.circular(10)),
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
colorFilter: const ColorFilter.mode(
Colors.black26, BlendMode.darken),
fit: BoxFit.cover,
image: AssetImage(timeBgAssets[index % 3]),
)),
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 2, sigmaY: 2),
child: Row(
children: [
Expanded(
flex: 7,
child: Container(
padding: EdgeInsets.only(left: 20),
// color: Colors.red,
margin: const EdgeInsets.only(
top: 4, left: 4, bottom: 4),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
entries[index % entries.length],
textAlign: TextAlign.start,
overflow: TextOverflow.ellipsis,
style:
const TextStyle(fontSize: 20),
),
Row(
children: const [
Icon(Icons.star, size: 16),
Icon(Icons.star, size: 16),
Icon(Icons.star, size: 16),
Icon(Icons.star_half, size: 16),
Icon(Icons.star_border,
size: 16),
],
),
Expanded(
List<Seller> sellers = [];
var loc = _diningOptions[index % _diningOptions.length];
return FutureBuilder<List<Seller>>(
future: getSellers(Filter([loc], null, null)),
builder: (BuildContext context,
AsyncSnapshot<List<Seller>> snapshot) {
if (snapshot.hasData) {
final data = snapshot.data ?? [];
String startTimeFmt = DateFormat("h:mm a").format(
data[index % data.length]
.availableTime
.startTime
.toDate());
String endTimeFmt = DateFormat("h:mm a").format(
data[index % data.length]
.availableTime
.endTime
.toDate());
final price = data[index % data.length].price;
return InkWell(
onTap: () {
showSheet(context, index);
// showDialog(
// context: context,
// builder: (BuildContext context) => Dialog(
// backgroundColor: Theme.of(context).scaffoldBackgroundColor,
// shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(20))),
// child: Padding(
// padding: const EdgeInsets.all(8.0),
// child: Column(
// mainAxisSize: MainAxisSize.min,
// mainAxisAlignment: MainAxisAlignment.center,
// children: <Widget>[
// const Text('Transaction Details'),
// const SizedBox(height: 15),
// TextButton(
// onPressed: () {
// Navigator.pop(context);
// },
// child: const Text('Close'),
// ),
// ],
// ),
// )));
// // Dialogs.materialDialog(
// // color: Theme.of(context).scaffoldBackgroundColor,
// // customView: const TransactionDetails(),
// // customViewPosition:
// // CustomViewPosition.BEFORE_ACTION,
// // msgAlign: TextAlign.center,
// // msg:
// // 'Please read all the information below before purchasing.\n',
// // title: 'Transaction Details',
// // context: context,
// // actions: [
// // IconsOutlineButton(
// // onPressed: () {},
// // text: 'Cancel',
// // iconData: Icons.cancel_outlined,
// // color: Theme.of(context).primaryColor,
// // textStyle: TextStyle(
// // color: CustomMaterialColor(240, 240, 240)
// // .mdColor,
// // ),
// // iconColor: CustomMaterialColor(240, 240, 240)
// // .mdColor),
// // IconsButton(
// // onPressed: () {},
// // text: 'Purchase',
// // iconData: Icons.done,
// // color: Colors.green,
// // textStyle: TextStyle(
// // color: CustomMaterialColor(240, 240, 240)
// // .mdColor,
// // ),
// // iconColor: CustomMaterialColor(240, 240, 240)
// // .mdColor),
// // ],
// // );
},
child: Container(
decoration: BoxDecoration(
border: Border.all(
color:
CustomMaterialColor(240, 240, 240)
.mdColor,
width: 2),
borderRadius: const BorderRadius.all(
Radius.circular(10))),
margin: const EdgeInsets.all(4),
height: 120,
child: ClipRRect(
borderRadius: const BorderRadius.all(
Radius.circular(10)),
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
colorFilter: const ColorFilter.mode(
Colors.black26, BlendMode.darken),
fit: BoxFit.cover,
image:
AssetImage(timeBgAssets[index % 3]),
)),
child: BackdropFilter(
filter: ImageFilter.blur(
sigmaX: 2, sigmaY: 2),
child: Row(
children: [
Expanded(
flex: 7,
child: Container(
padding:
EdgeInsets.only(left: 20),
// color: Colors.red,
margin: const EdgeInsets.only(
top: 4, left: 4, bottom: 4),
child: Column(
mainAxisAlignment:
MainAxisAlignment.end,
children: const [
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
'88:88PM - 88:88PM',
data?[index % data.length]
.name ??
"Unknown Seller",
textAlign: TextAlign.start,
overflow:
TextOverflow.ellipsis,
style:
TextStyle(fontSize: 16),
style: const TextStyle(
fontSize: 20),
),
Row(
children: const [
Icon(Icons.star,
size: 16),
Icon(Icons.star,
size: 16),
Icon(Icons.star,
size: 16),
Icon(Icons.star_half,
size: 16),
Icon(Icons.star_border,
size: 16),
],
),
Expanded(
child: Column(
mainAxisAlignment:
MainAxisAlignment.end,
children: [
Text(
"$startTimeFmt - $endTimeFmt",
textAlign:
TextAlign.start,
overflow: TextOverflow
.ellipsis,
style: TextStyle(
fontSize: 16),
),
],
),
)
],
),
)
],
),
),
),
Expanded(
flex: 3,
child: Container(
padding:
EdgeInsets.only(right: 15),
child: Text(
'\$${price}',
textAlign: TextAlign.end,
style: TextStyle(fontSize: 44),
),
),
),
],
),
),
Expanded(
flex: 3,
child: Container(
padding: EdgeInsets.only(right: 15),
child: Text(
'\$88',
textAlign: TextAlign.end,
style: TextStyle(fontSize: 44),
),
),
),
],
),
),
),
),
),
),
);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
);
}),
),

View File

@@ -9,8 +9,7 @@ import 'auth_gate.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
Stripe.publishableKey =
"pk_test_51MfY7PFVdcWv896FKvDhgKabYeDq4AnoFcWxCAg4hquj6TBAsN0kznXPVyKA7M1pMq5PsieGQwsx6QY5ld5ZQzJ500rVCMPPXp";
Stripe.publishableKey = "pk_test_51MfY7PFVdcWv896FKvDhgKabYeDq4AnoFcWxCAg4hquj6TBAsN0kznXPVyKA7M1pMq5PsieGQwsx6QY5ld5ZQzJ500rVCMPPXp";
runApp(const MyApp());
}
@@ -21,6 +20,39 @@ class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
inputDecorationTheme: InputDecorationTheme(
fillColor: Color.fromARGB(255, 40, 40, 40),
filled: true,
outlineBorder: BorderSide(
color: Colors.white,
),
labelStyle: TextStyle(
color: Color.fromARGB(255, 205, 0, 48),
),
focusColor: Colors.white,
hintStyle: TextStyle(
color: Color.fromARGB(255, 205, 0, 48),
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
),
),
textSelectionTheme: TextSelectionThemeData(),
fixTextFieldOutlineLabel: true,
outlinedButtonTheme: OutlinedButtonThemeData(
style: ButtonStyle(
padding: MaterialStateProperty.all<EdgeInsets>(
const EdgeInsets.all(24),
),
shape: MaterialStateProperty.all<RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
backgroundColor: MaterialStateProperty.all<Color>(Color.fromARGB(255, 205, 0, 48)),
foregroundColor: MaterialStateProperty.all<Color>(Colors.white),
),
),
primarySwatch: CustomMaterialColor(205, 0, 48).mdColor,
scaffoldBackgroundColor: Colors.black87,
fontFamily: GoogleFonts.figtree().fontFamily,
@@ -28,13 +60,9 @@ class MyApp extends StatelessWidget {
bodyColor: CustomMaterialColor(240, 240, 240).mdColor,
displayColor: CustomMaterialColor(240, 240, 240).mdColor,
),
textButtonTheme: TextButtonThemeData(
style: ButtonStyle(
textStyle: MaterialStatePropertyAll(TextStyle(
color: CustomMaterialColor(240, 240, 240).mdColor)))),
textButtonTheme: TextButtonThemeData(style: ButtonStyle(textStyle: MaterialStatePropertyAll(TextStyle(color: CustomMaterialColor(240, 240, 240).mdColor)))),
checkboxTheme: CheckboxThemeData(
fillColor: MaterialStatePropertyAll(
CustomMaterialColor(240, 240, 240).mdColor),
fillColor: MaterialStatePropertyAll(CustomMaterialColor(240, 240, 240).mdColor),
checkColor: MaterialStatePropertyAll(Colors.black),
),
),