mirror of
https://github.com/SoPat712/RUSwipeShare.git
synced 2025-08-21 10:58:47 -04:00
htiesh
This commit is contained in:
@@ -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(),
|
||||
],
|
||||
|
325
lib/buy.dart
325
lib/buy.dart
@@ -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();
|
||||
},
|
||||
);
|
||||
}),
|
||||
),
|
||||
|
@@ -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),
|
||||
),
|
||||
),
|
||||
|
@@ -10,7 +10,6 @@ import desktop_webview_auth
|
||||
import firebase_auth
|
||||
import firebase_core
|
||||
import firebase_database
|
||||
import geolocator_apple
|
||||
import path_provider_foundation
|
||||
import sign_in_with_apple
|
||||
import twitter_login
|
||||
@@ -22,7 +21,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin"))
|
||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||
FLTFirebaseDatabasePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseDatabasePlugin"))
|
||||
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
|
||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||
SignInWithApplePlugin.register(with: registry.registrar(forPlugin: "SignInWithApplePlugin"))
|
||||
TwitterLoginPlugin.register(with: registry.registrar(forPlugin: "TwitterLoginPlugin"))
|
||||
|
56
pubspec.lock
56
pubspec.lock
@@ -262,14 +262,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.1"
|
||||
flutter_dotenv:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_dotenv
|
||||
sha256: d9283d92059a22e9834bc0a31336658ffba77089fb6f3cc36751f1fc7c6661a3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.2"
|
||||
flutter_email_sender:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -357,54 +349,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
geolocator:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: geolocator
|
||||
sha256: "5c23f3613f50586c0bbb2b8f970240ae66b3bd992088cf60dd5ee2e6f7dde3a8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.0.2"
|
||||
geolocator_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: geolocator_android
|
||||
sha256: "2ba24690aee0a3e1b6b7bd47c2711a50c874e95e4c758346589d35194adf6d6a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.1.7"
|
||||
geolocator_apple:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: geolocator_apple
|
||||
sha256: "22b60ca3b8c0f58e6a9688ff855ee39ab813ca3f0c0609a48d282f6631266f2e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.5"
|
||||
geolocator_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: geolocator_platform_interface
|
||||
sha256: af4d69231452f9620718588f41acc4cb58312368716bfff2e92e770b46ce6386
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.7"
|
||||
geolocator_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: geolocator_web
|
||||
sha256: f68a122da48fcfff68bbc9846bb0b74ef651afe84a1b1f6ec20939de4d6860e1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.6"
|
||||
geolocator_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: geolocator_windows
|
||||
sha256: f5911c88e23f48b598dd506c7c19eff0e001645bdc03bb6fecb9f4549208354d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.1"
|
||||
google_fonts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@@ -38,9 +38,7 @@ dependencies:
|
||||
firebase_core: ^2.7.0
|
||||
firebase_auth: ^4.2.9
|
||||
flutterfire_ui: ^0.4.3+20
|
||||
flutter_dotenv: ^5.0.2
|
||||
persistent_bottom_nav_bar: any
|
||||
geolocator: ^9.0.2
|
||||
flutter_credit_card: any
|
||||
flutter_stripe: any
|
||||
material_dialogs: any
|
||||
|
@@ -7,14 +7,11 @@
|
||||
#include "generated_plugin_registrant.h"
|
||||
|
||||
#include <desktop_webview_auth/desktop_webview_auth_plugin.h>
|
||||
#include <geolocator_windows/geolocator_windows.h>
|
||||
#include <url_launcher_windows/url_launcher_windows.h>
|
||||
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
DesktopWebviewAuthPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("DesktopWebviewAuthPlugin"));
|
||||
GeolocatorWindowsRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("GeolocatorWindows"));
|
||||
UrlLauncherWindowsRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
|
||||
}
|
||||
|
@@ -4,7 +4,6 @@
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
desktop_webview_auth
|
||||
geolocator_windows
|
||||
url_launcher_windows
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user