removed warnings
This commit is contained in:
parent
22b61b7024
commit
fc099cccb5
@ -33,13 +33,13 @@ class PaymentRequestController extends GetxController {
|
|||||||
try {
|
try {
|
||||||
final response = await ApiService.getExpensePaymentRequestFilterApi();
|
final response = await ApiService.getExpensePaymentRequestFilterApi();
|
||||||
|
|
||||||
if (response != null && response.data != null) {
|
if (response != null) {
|
||||||
projects.assignAll(response.data!.projects ?? []);
|
projects.assignAll(response.data.projects);
|
||||||
payees.assignAll(response.data!.payees ?? []);
|
payees.assignAll(response.data.payees);
|
||||||
categories.assignAll(response.data!.expenseCategory ?? []);
|
categories.assignAll(response.data.expenseCategory);
|
||||||
currencies.assignAll(response.data!.currency ?? []);
|
currencies.assignAll(response.data.currency);
|
||||||
statuses.assignAll(response.data!.status ?? []);
|
statuses.assignAll(response.data.status);
|
||||||
createdBy.assignAll(response.data!.createdBy ?? []);
|
createdBy.assignAll(response.data.createdBy);
|
||||||
} else {
|
} else {
|
||||||
logSafe("Payment request filter API returned null",
|
logSafe("Payment request filter API returned null",
|
||||||
level: LogLevel.warning);
|
level: LogLevel.warning);
|
||||||
|
|||||||
@ -5,11 +5,9 @@ import 'package:on_field_work/helpers/widgets/my_spacing.dart';
|
|||||||
import 'package:on_field_work/helpers/widgets/my_text.dart';
|
import 'package:on_field_work/helpers/widgets/my_text.dart';
|
||||||
import 'package:on_field_work/helpers/utils/mixins/ui_mixin.dart';
|
import 'package:on_field_work/helpers/utils/mixins/ui_mixin.dart';
|
||||||
|
|
||||||
class CustomAppBar extends StatefulWidget
|
class CustomAppBar extends StatefulWidget implements PreferredSizeWidget {
|
||||||
with UIMixin
|
|
||||||
implements PreferredSizeWidget {
|
|
||||||
final String title;
|
final String title;
|
||||||
final String? projectName; // If passed, show static text
|
final String? projectName;
|
||||||
final VoidCallback? onBackPressed;
|
final VoidCallback? onBackPressed;
|
||||||
final Color? backgroundColor;
|
final Color? backgroundColor;
|
||||||
|
|
||||||
@ -51,13 +49,13 @@ class _CustomAppBarState extends State<CustomAppBar> with UIMixin {
|
|||||||
return OverlayEntry(
|
return OverlayEntry(
|
||||||
builder: (context) => GestureDetector(
|
builder: (context) => GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
_toggleDropdown();
|
_toggleDropdown();
|
||||||
},
|
},
|
||||||
behavior: HitTestBehavior.translucent,
|
behavior: HitTestBehavior.translucent,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
Positioned(
|
Positioned(
|
||||||
left: offset.dx + 16,
|
left: offset.dx + 16,
|
||||||
top: offset.dy + size.height,
|
top: offset.dy + size.height,
|
||||||
width: size.width - 32,
|
width: size.width - 32,
|
||||||
child: Material(
|
child: Material(
|
||||||
|
|||||||
@ -197,7 +197,7 @@ class _ReimbursementBottomSheetState extends State<ReimbursementBottomSheet> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (expenseTransactionDate != null && selectedDate != null) {
|
if (expenseTransactionDate != null) {
|
||||||
final normalizedSelected = DateTime(
|
final normalizedSelected = DateTime(
|
||||||
selectedDate.year,
|
selectedDate.year,
|
||||||
selectedDate.month,
|
selectedDate.month,
|
||||||
|
|||||||
@ -538,7 +538,7 @@ class _EmployeeDetailPageState extends State<EmployeeDetailPage> with UIMixin {
|
|||||||
if (managers.isEmpty) return '—';
|
if (managers.isEmpty) return '—';
|
||||||
return managers
|
return managers
|
||||||
.map((m) =>
|
.map((m) =>
|
||||||
'${(m.firstName ?? '').trim()} ${(m.lastName ?? '').trim()}'.trim())
|
'${(m.firstName ).trim()} ${(m.lastName ).trim()}'.trim())
|
||||||
.where((name) => name.isNotEmpty)
|
.where((name) => name.isNotEmpty)
|
||||||
.join(', ');
|
.join(', ');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -217,7 +217,7 @@ class _PaymentRequestDetailScreenState extends State<PaymentRequestDetailScreen>
|
|||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_checkedPermission && request != null && employeeInfo != null) {
|
if (!_checkedPermission && employeeInfo != null) {
|
||||||
_checkedPermission = true;
|
_checkedPermission = true;
|
||||||
_checkPermissionToSubmit(request);
|
_checkPermissionToSubmit(request);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,13 +50,12 @@ class _TenantSelectionScreenState extends State<TenantSelectionScreen>
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _onTenantSelected(String tenantId) async {
|
Future<void> _onTenantSelected(String tenantId) async {
|
||||||
await _controller.onTenantSelected(tenantId);
|
return _controller.onTenantSelected(tenantId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Obx(() {
|
return Obx(() {
|
||||||
// Splash screen for auto-selection
|
|
||||||
if (_controller.isAutoSelecting.value) {
|
if (_controller.isAutoSelecting.value) {
|
||||||
return const SplashScreen();
|
return const SplashScreen();
|
||||||
}
|
}
|
||||||
@ -91,6 +90,7 @@ class _TenantSelectionScreenState extends State<TenantSelectionScreen>
|
|||||||
controller: _controller,
|
controller: _controller,
|
||||||
isLoading: _controller.isLoading.value,
|
isLoading: _controller.isLoading.value,
|
||||||
onTenantSelected: _onTenantSelected,
|
onTenantSelected: _onTenantSelected,
|
||||||
|
primaryColor: contentTheme.primary,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -109,7 +109,6 @@ class _TenantSelectionScreenState extends State<TenantSelectionScreen>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Animated Logo Widget
|
|
||||||
class _AnimatedLogo extends StatelessWidget {
|
class _AnimatedLogo extends StatelessWidget {
|
||||||
final Animation<double> animation;
|
final Animation<double> animation;
|
||||||
const _AnimatedLogo({required this.animation});
|
const _AnimatedLogo({required this.animation});
|
||||||
@ -139,7 +138,6 @@ class _AnimatedLogo extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Welcome Texts
|
|
||||||
class _WelcomeTexts extends StatelessWidget {
|
class _WelcomeTexts extends StatelessWidget {
|
||||||
const _WelcomeTexts();
|
const _WelcomeTexts();
|
||||||
|
|
||||||
@ -166,7 +164,6 @@ class _WelcomeTexts extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Beta Badge
|
|
||||||
class _BetaBadge extends StatelessWidget {
|
class _BetaBadge extends StatelessWidget {
|
||||||
const _BetaBadge();
|
const _BetaBadge();
|
||||||
|
|
||||||
@ -188,16 +185,18 @@ class _BetaBadge extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Tenant Card List
|
class TenantCardList extends StatelessWidget {
|
||||||
class TenantCardList extends StatelessWidget with UIMixin {
|
|
||||||
final TenantSelectionController controller;
|
final TenantSelectionController controller;
|
||||||
final bool isLoading;
|
final bool isLoading;
|
||||||
final Function(String tenantId) onTenantSelected;
|
final Function(String tenantId) onTenantSelected;
|
||||||
|
final Color primaryColor;
|
||||||
|
|
||||||
TenantCardList({
|
const TenantCardList({
|
||||||
|
super.key,
|
||||||
required this.controller,
|
required this.controller,
|
||||||
required this.isLoading,
|
required this.isLoading,
|
||||||
required this.onTenantSelected,
|
required this.onTenantSelected,
|
||||||
|
required this.primaryColor,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -226,18 +225,16 @@ class TenantCardList extends StatelessWidget with UIMixin {
|
|||||||
(tenant) => _TenantCard(
|
(tenant) => _TenantCard(
|
||||||
tenant: tenant,
|
tenant: tenant,
|
||||||
onTap: () => onTenantSelected(tenant.id),
|
onTap: () => onTenantSelected(tenant.id),
|
||||||
|
primaryColor: primaryColor,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
TextButton.icon(
|
TextButton.icon(
|
||||||
onPressed: () async {
|
onPressed: LocalStorage.logout,
|
||||||
await LocalStorage.logout();
|
icon: Icon(Icons.arrow_back, size: 20, color: primaryColor),
|
||||||
},
|
|
||||||
icon:
|
|
||||||
Icon(Icons.arrow_back, size: 20, color: contentTheme.primary,),
|
|
||||||
label: MyText(
|
label: MyText(
|
||||||
'Back to Login',
|
'Back to Login',
|
||||||
color: contentTheme.primary,
|
color: primaryColor,
|
||||||
fontWeight: 600,
|
fontWeight: 600,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
),
|
),
|
||||||
@ -248,11 +245,16 @@ class TenantCardList extends StatelessWidget with UIMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Single Tenant Card
|
class _TenantCard extends StatelessWidget {
|
||||||
class _TenantCard extends StatelessWidget with UIMixin {
|
|
||||||
final dynamic tenant;
|
final dynamic tenant;
|
||||||
final VoidCallback onTap;
|
final VoidCallback onTap;
|
||||||
_TenantCard({required this.tenant, required this.onTap});
|
final Color primaryColor;
|
||||||
|
|
||||||
|
const _TenantCard({
|
||||||
|
required this.tenant,
|
||||||
|
required this.onTap,
|
||||||
|
required this.primaryColor,
|
||||||
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -297,7 +299,7 @@ class _TenantCard extends StatelessWidget with UIMixin {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Icon(Icons.arrow_forward_ios, size: 24, color: contentTheme.primary,),
|
Icon(Icons.arrow_forward_ios, size: 24, color: primaryColor),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -306,7 +308,6 @@ class _TenantCard extends StatelessWidget with UIMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Tenant Logo (supports base64 and URL)
|
|
||||||
class TenantLogo extends StatelessWidget {
|
class TenantLogo extends StatelessWidget {
|
||||||
final String? logoImage;
|
final String? logoImage;
|
||||||
const TenantLogo({required this.logoImage});
|
const TenantLogo({required this.logoImage});
|
||||||
@ -324,14 +325,13 @@ class TenantLogo extends StatelessWidget {
|
|||||||
} catch (_) {
|
} catch (_) {
|
||||||
return Center(child: Icon(Icons.business, color: Colors.grey.shade600));
|
return Center(child: Icon(Icons.business, color: Colors.grey.shade600));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
return Image.network(
|
|
||||||
logoImage!,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
errorBuilder: (_, __, ___) => Center(
|
|
||||||
child: Icon(Icons.business, color: Colors.grey.shade600),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return Image.network(
|
||||||
|
logoImage!,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
errorBuilder: (_, __, ___) =>
|
||||||
|
Center(child: Icon(Icons.business, color: Colors.grey.shade600)),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user