This commit is contained in:
Drake Marino 2024-06-26 13:06:03 -05:00
parent c4758eac73
commit fd94dbf20d
8 changed files with 23 additions and 124 deletions

View File

@ -99,8 +99,6 @@ class _HomeState extends State<Home> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
bool widescreen = MediaQuery.sizeOf(context).width >= widescreenWidth; bool widescreen = MediaQuery.sizeOf(context).width >= widescreenWidth;
return Scaffold( return Scaffold(
// floatingActionButton: _getFAB(widescreen, scrollControllerBusinesses,
// scrollControllerJobs, currentPageIndex),
bottomNavigationBar: _getNavigationBar(widescreen), bottomNavigationBar: _getNavigationBar(widescreen),
body: RefreshIndicator( body: RefreshIndicator(
edgeOffset: 145, edgeOffset: 145,
@ -173,13 +171,6 @@ class _HomeState extends State<Home> {
color: Theme.of(context).colorScheme.onSurface, color: Theme.of(context).colorScheme.onSurface,
), ),
label: 'Job Listings'), label: 'Job Listings'),
// NavigationDestination(
// icon: const Icon(Icons.description_outlined),
// selectedIcon: Icon(
// Icons.description,
// color: Theme.of(context).colorScheme.onSurface,
// ),
// label: 'Export Data')
], ],
); );
} }
@ -264,51 +255,11 @@ class _HomeState extends State<Home> {
color: Theme.of(context).colorScheme.onSurface, color: Theme.of(context).colorScheme.onSurface,
), ),
label: const Text('Job Listings')), label: const Text('Job Listings')),
// NavigationRailDestination(
// icon: const Icon(Icons.description_outlined),
// selectedIcon: Icon(
// Icons.description,
// color: Theme.of(context).colorScheme.onSurface,
// ),
// label: const Text('Export Data'))
], ],
), ),
// children.first
], ],
); );
// }
// return children.first;
} }
// Widget _contentPane() {
// return IndexedStack(
// index: currentPageIndex,
// children: [
// BusinessesOverview(
// searchQuery: searchQuery,
// refreshBusinessDataOverviewFuture:
// refreshBusinessDataOverviewBusinessFuture,
// updateBusinessesCallback: _updateOverviewBusinessesBusinessCallback,
// themeCallback: widget.themeCallback,
// updateLoggedIn: _updateLoggedIn,
// ),
// JobsOverview(
// searchQuery: searchQuery,
// refreshJobDataOverviewFuture: refreshBusinessDataOverviewJobFuture,
// updateBusinessesCallback: _updateOverviewBusinessesJobsCallback,
// themeCallback: widget.themeCallback, updateLoggedIn: _updateLoggedIn),
// ExportData(
// searchQuery: searchQuery,
// refreshBusinessDataOverviewFuture:
// refreshBusinessDataOverviewBusinessFuture,
// updateBusinessesWithJobCallback:
// _updateOverviewBusinessesJobsCallback,
// themeCallback: widget.themeCallback,
// refreshJobDataOverviewFuture: refreshBusinessDataOverviewJobFuture,
// updateBusinessesCallback: _updateOverviewBusinessesBusinessCallback)
// ],
// );
// }
} }
class _ContentPane extends StatelessWidget { class _ContentPane extends StatelessWidget {
@ -354,35 +305,7 @@ class _ContentPane extends StatelessWidget {
themeCallback: themeCallback, themeCallback: themeCallback,
updateLoggedIn: updateLoggedIn, updateLoggedIn: updateLoggedIn,
), ),
// ExportData(
// searchQuery: searchQuery,
// refreshBusinessDataOverviewFuture:
// refreshBusinessDataOverviewBusinessFuture,
// updateBusinessesWithJobCallback:
// updateOverviewBusinessesJobsCallback,
// themeCallback: themeCallback,
// refreshJobDataOverviewFuture: refreshBusinessDataOverviewJobFuture,
// updateBusinessesCallback: updateOverviewBusinessesBusinessCallback)
], ],
); );
} }
} }
// class FABAnimator extends FloatingActionButtonAnimator {
// @override
// Offset getOffset({Offset begin, Offset end, double progress}) {
// return end;
// }
//
// @override
// Animation<double> getRotationAnimation({required Animation<double> parent}) {
// return Tween<double>(begin: 0.0, end: 1.0).animate(parent);
// throw UnimplementedError();
// }
//
// @override
// Animation<double> getScaleAnimation({required Animation<double> parent}) {
// return Tween<double>(begin: 0.0, end: 1.0).animate(parent);
// throw UnimplementedError();
// }
// }

View File

@ -83,10 +83,10 @@ class _MainAppState extends State<MainApp> {
iconTheme: const IconThemeData(color: Colors.white), iconTheme: const IconThemeData(color: Colors.white),
useMaterial3: true, useMaterial3: true,
inputDecorationTheme: InputDecorationTheme( inputDecorationTheme: InputDecorationTheme(
// border: OutlineInputBorder(),
filled: true, filled: true,
fillColor: Colors.grey.withOpacity(0.1), fillColor: Colors.grey.withOpacity(0.1),
labelStyle: const TextStyle(color: Colors.grey), labelStyle: const TextStyle(color: Colors.grey),
floatingLabelStyle: TextStyle(color: Colors.blue.shade700),
), ),
dropdownMenuTheme: const DropdownMenuThemeData( dropdownMenuTheme: const DropdownMenuThemeData(
inputDecorationTheme: InputDecorationTheme( inputDecorationTheme: InputDecorationTheme(
@ -112,6 +112,7 @@ class _MainAppState extends State<MainApp> {
filled: true, filled: true,
fillColor: Colors.blue.withOpacity(0.1), fillColor: Colors.blue.withOpacity(0.1),
labelStyle: const TextStyle(color: Colors.grey), labelStyle: const TextStyle(color: Colors.grey),
floatingLabelStyle: TextStyle(color: Colors.blue.shade700),
), ),
dropdownMenuTheme: const DropdownMenuThemeData( dropdownMenuTheme: const DropdownMenuThemeData(
inputDecorationTheme: InputDecorationTheme( inputDecorationTheme: InputDecorationTheme(

View File

@ -450,6 +450,7 @@ class _BusinessHeaderState extends State<_BusinessHeader> {
} }
} }
/// A desktop widget that displays basic info about a business
Widget _businessTile(Business business, BusinessType jobType) { Widget _businessTile(Business business, BusinessType jobType) {
return MouseRegion( return MouseRegion(
cursor: SystemMouseCursors.click, cursor: SystemMouseCursors.click,
@ -573,6 +574,7 @@ class _BusinessHeaderState extends State<_BusinessHeader> {
); );
} }
/// A mobile widget that displays basic info about a business
Widget _businessListItem(Business business, BusinessType? jobType) { Widget _businessListItem(Business business, BusinessType? jobType) {
return Card( return Card(
child: ListTile( child: ListTile(

View File

@ -91,6 +91,7 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
), ),
floatingActionButton: !widescreen floatingActionButton: !widescreen
? FloatingActionButton.extended( ? FloatingActionButton.extended(
heroTag: 'saveBusiness',
label: const Text('Save'), label: const Text('Save'),
icon: _isLoading icon: _isLoading
? const SizedBox( ? const SizedBox(
@ -171,8 +172,6 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
right: 8.0), right: 8.0),
child: TextFormField( child: TextFormField(
controller: _nameController, controller: _nameController,
autovalidateMode:
AutovalidateMode.onUserInteraction,
maxLength: 30, maxLength: 30,
onChanged: (inputName) { onChanged: (inputName) {
setState(() { setState(() {
@ -198,8 +197,6 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
bottom: 8.0, left: 8.0, right: 8.0), bottom: 8.0, left: 8.0, right: 8.0),
child: TextFormField( child: TextFormField(
controller: _descriptionController, controller: _descriptionController,
autovalidateMode:
AutovalidateMode.onUserInteraction,
maxLength: 500, maxLength: 500,
maxLines: null, maxLines: null,
onChanged: (inputDesc) { onChanged: (inputDesc) {
@ -227,8 +224,6 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
left: 8.0, right: 8.0, bottom: 16.0), left: 8.0, right: 8.0, bottom: 16.0),
child: TextFormField( child: TextFormField(
controller: _websiteController, controller: _websiteController,
autovalidateMode:
AutovalidateMode.onUserInteraction,
keyboardType: TextInputType.url, keyboardType: TextInputType.url,
onChanged: (inputUrl) { onChanged: (inputUrl) {
business.website = Uri.encodeFull(inputUrl); business.website = Uri.encodeFull(inputUrl);
@ -267,7 +262,12 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
left: 8.0, right: 8.0, bottom: 16.0), left: 8.0, right: 8.0, bottom: 16.0),
child: DropdownMenu<BusinessType>( child: DropdownMenu<BusinessType>(
initialSelection: business.type, initialSelection: business.type,
// width: 776, width: (MediaQuery.sizeOf(context).width -
24) <
776
? MediaQuery.sizeOf(context).width - 24
: 776,
menuHeight: 300,
label: const Text('Business Type'), label: const Text('Business Type'),
errorText: dropDownErrorText, errorText: dropDownErrorText,
dropdownMenuEntries: [ dropdownMenuEntries: [
@ -375,8 +375,6 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
labelText: labelText:
'Contact Information Name (required)', 'Contact Information Name (required)',
), ),
autovalidateMode:
AutovalidateMode.onUserInteraction,
validator: (value) { validator: (value) {
if (value == null || value.trim().isEmpty) { if (value == null || value.trim().isEmpty) {
return 'Contact name is required'; return 'Contact name is required';
@ -392,8 +390,6 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
controller: _contactPhoneController, controller: _contactPhoneController,
inputFormatters: [PhoneFormatter()], inputFormatters: [PhoneFormatter()],
keyboardType: TextInputType.phone, keyboardType: TextInputType.phone,
autovalidateMode:
AutovalidateMode.onUserInteraction,
onChanged: (inputText) { onChanged: (inputText) {
if (inputText.trim().isEmpty) { if (inputText.trim().isEmpty) {
business.contactPhone = null; business.contactPhone = null;
@ -432,8 +428,6 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
business.contactEmail = inputText.trim(); business.contactEmail = inputText.trim();
} }
}, },
autovalidateMode:
AutovalidateMode.onUserInteraction,
onTapOutside: (PointerDownEvent event) { onTapOutside: (PointerDownEvent event) {
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
}, },
@ -472,8 +466,6 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
business.locationName = inputName.trim(); business.locationName = inputName.trim();
}); });
}, },
autovalidateMode:
AutovalidateMode.onUserInteraction,
onTapOutside: (PointerDownEvent event) { onTapOutside: (PointerDownEvent event) {
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
}, },
@ -498,8 +490,6 @@ class _CreateEditBusinessState extends State<CreateEditBusiness> {
business.locationAddress = inputAddr; business.locationAddress = inputAddr;
}); });
}, },
autovalidateMode:
AutovalidateMode.onUserInteraction,
onTapOutside: (PointerDownEvent event) { onTapOutside: (PointerDownEvent event) {
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
}, },

View File

@ -83,6 +83,7 @@ class _CreateEditJobListingState extends State<CreateEditJobListing> {
), ),
floatingActionButton: !widescreen floatingActionButton: !widescreen
? FloatingActionButton.extended( ? FloatingActionButton.extended(
heroTag: 'saveListing',
label: const Text('Save'), label: const Text('Save'),
icon: _isLoading icon: _isLoading
? const SizedBox( ? const SizedBox(
@ -227,6 +228,7 @@ class _CreateEditJobListingState extends State<CreateEditJobListing> {
typeDropdownErrorText, typeDropdownErrorText,
width: calculateDropdownWidth( width: calculateDropdownWidth(
context), context),
menuHeight: 300,
dropdownMenuEntries: [ dropdownMenuEntries: [
for (JobType type for (JobType type
in JobType.values) in JobType.values)
@ -336,8 +338,6 @@ class _CreateEditJobListingState extends State<CreateEditJobListing> {
bottom: 8.0), bottom: 8.0),
child: TextFormField( child: TextFormField(
controller: _nameController, controller: _nameController,
autovalidateMode: AutovalidateMode
.onUserInteraction,
maxLength: 30, maxLength: 30,
onChanged: (inputName) { onChanged: (inputName) {
setState(() { setState(() {
@ -368,8 +368,6 @@ class _CreateEditJobListingState extends State<CreateEditJobListing> {
bottom: 8.0), bottom: 8.0),
child: TextFormField( child: TextFormField(
controller: _descriptionController, controller: _descriptionController,
autovalidateMode: AutovalidateMode
.onUserInteraction,
maxLength: 500, maxLength: 500,
maxLines: null, maxLines: null,
onChanged: (inputDesc) { onChanged: (inputDesc) {
@ -422,8 +420,6 @@ class _CreateEditJobListingState extends State<CreateEditJobListing> {
bottom: 16.0), bottom: 16.0),
child: TextFormField( child: TextFormField(
controller: _linkController, controller: _linkController,
autovalidateMode: AutovalidateMode
.onUserInteraction,
keyboardType: TextInputType.url, keyboardType: TextInputType.url,
onChanged: (inputUrl) { onChanged: (inputUrl) {
if (inputUrl != '') { if (inputUrl != '') {
@ -475,7 +471,7 @@ class _CreateEditJobListingState extends State<CreateEditJobListing> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Padding( Padding(
padding: EdgeInsets.only( padding: const EdgeInsets.only(
top: 8.0, top: 8.0,
right: 8.0, right: 8.0,
bottom: 8.0), bottom: 8.0),

View File

@ -258,7 +258,9 @@ class _CreateBusinessDetailState extends State<JobListingDetail> {
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => const MainApp())); builder: (context) => const MainApp(
initialPage: 1,
)));
} }
}), }),
], ],

View File

@ -491,7 +491,7 @@ class _JobHeaderState extends State<_JobHeader> {
delegate: SliverChildBuilderDelegate( delegate: SliverChildBuilderDelegate(
childCount: businesses.length, childCount: businesses.length,
(BuildContext context, int index) { (BuildContext context, int index) {
return _businessTile( return _jobBusinessTile(
businesses[index], businesses[index],
widget.jobType, widget.jobType,
); );
@ -504,7 +504,7 @@ class _JobHeaderState extends State<_JobHeader> {
delegate: SliverChildBuilderDelegate( delegate: SliverChildBuilderDelegate(
childCount: businesses.length, childCount: businesses.length,
(BuildContext context, int index) { (BuildContext context, int index) {
return _businessListItem( return _jobBusinessListItem(
businesses[index], businesses[index],
widget.jobType, widget.jobType,
); );
@ -514,7 +514,8 @@ class _JobHeaderState extends State<_JobHeader> {
} }
} }
Widget _businessTile(Business business, JobType jobType) { /// A desktop widget that displays basic info about a job
Widget _jobBusinessTile(Business business, JobType jobType) {
return MouseRegion( return MouseRegion(
cursor: SystemMouseCursors.click, cursor: SystemMouseCursors.click,
child: GestureDetector( child: GestureDetector(
@ -653,7 +654,8 @@ class _JobHeaderState extends State<_JobHeader> {
); );
} }
Widget _businessListItem(Business business, JobType? jobType) { /// A mobile widget that displays basic info about a job
Widget _jobBusinessListItem(Business business, JobType? jobType) {
return Card( return Card(
child: ListTile( child: ListTile(
leading: Badge( leading: Badge(

View File

@ -87,20 +87,6 @@ Future fetchBusinessDataOverviewJobs(
} }
return groupedBusinesses; return groupedBusinesses;
// Map<JobType, List<Business>> groupedBusinesses = {};
//
// for (String stringType in decodedResponse.keys) {
// List<Business> businesses = [];
//
// for (Map<String, dynamic> map in decodedResponse[stringType]) {
// Business business = Business.fromJson(map);
// businesses.add(business);
// }
//
// groupedBusinesses
// .addAll({JobType.values.byName(stringType): businesses});
// }
// return groupedBusinesses;
} else { } else {
return 'Error ${response.statusCode}! Please try again later!'; return 'Error ${response.statusCode}! Please try again later!';
} }
@ -394,9 +380,6 @@ Future marinoDevLogo() async {
Uri.parse('$apiAddress/marinodev'), Uri.parse('$apiAddress/marinodev'),
); );
// File logo = File ('${getTemporaryDirectory().toString()}/marinodev.svg');
// logo.writeAsBytes(response.bodyBytes);
return response.bodyBytes; return response.bodyBytes;
} }