Code Merged
This commit is contained in:
parent
7e1b5c1022
commit
1fefb22f46
File diff suppressed because one or more lines are too long
@ -1718,6 +1718,28 @@ class ApiService {
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> fetchAgentUnusedCommissionList(id,broker_id) async {
|
||||
print('fetchAGENTNameDropDown');
|
||||
if (_token == null) {
|
||||
await _initializeToken();
|
||||
}
|
||||
|
||||
dynamic url;
|
||||
print('fetchAGENTNameDropDown 1');
|
||||
url = Uri.parse(
|
||||
'${Env.apiUrl}invoice/getAgentUnusedCommissionList?manager_id=$id&broker_id=$broker_id',
|
||||
);
|
||||
print('fetchAGENTNameDropDown 2');
|
||||
final headers = {
|
||||
'Authorization': 'Bearer $_token' ?? '',
|
||||
'app-signature': Env.App_Signature,
|
||||
};
|
||||
print('fetchAGENTNameDropDown 3');
|
||||
final response = await _makeGetRequest(url, headers);
|
||||
print('fetchAGENTNameDropDown 4 - $response');
|
||||
return response;
|
||||
}
|
||||
|
||||
static late String _baseUrl;
|
||||
|
||||
static void initialize(String baseUrl) {
|
||||
@ -2093,7 +2115,7 @@ class ApiService {
|
||||
|
||||
Future<void> generatePolicyExcel(managerId, fromDate, toDate, searchValue) async {
|
||||
final url = Uri.parse(
|
||||
'${Env.apiUrl}reports/policy-excel?manager_id=$managerId&from_date=${fromDate ?? ''}&to_date=${toDate ?? ''}',
|
||||
'${Env.apiUrl}reports/policy-excel?manager_id=$managerId&from_date=${fromDate ?? ''}&to_date=${toDate ?? ''}&search=${searchValue ?? ''}',
|
||||
);
|
||||
|
||||
// final url = Uri.parse( 'http://localhost/nhance_partner_be/reports/policy-excel?manager_id=$managerId&from_date=${fromDate ?? ''}&to_date=${toDate ?? ''}&search=${searchValue ?? ''}', );
|
||||
|
||||
@ -93,9 +93,10 @@ class _DateFilterRowState extends ConsumerState<DateFilterRowPayout> {
|
||||
// getPartnerDetails(userID);
|
||||
// }
|
||||
|
||||
if (managerId != null) {
|
||||
if (managerId != null && widget.selectedBroker != null) {
|
||||
print('managerId - $managerId');
|
||||
getAgentList(managerId);
|
||||
print('SelectedBroker - $widget.selectedBroker');
|
||||
getAgentList(managerId,widget.selectedBroker);
|
||||
}
|
||||
});
|
||||
|
||||
@ -133,24 +134,31 @@ class _DateFilterRowState extends ConsumerState<DateFilterRowPayout> {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> getAgentList(id) async {
|
||||
Future<void> getAgentList(id,broker_id) async {
|
||||
|
||||
print('getAgentListData called');
|
||||
setState(() {
|
||||
isLoadingAgentList = true;
|
||||
});
|
||||
|
||||
try {
|
||||
final response = await apiService.fetchAgentNameDropDown(id);
|
||||
final response = await apiService.fetchAgentUnusedCommissionList(id,broker_id);
|
||||
print('getAgentListData called response');
|
||||
print('get Agent- ${response['data']}');
|
||||
if (response['status'] == 'success') {
|
||||
print('get Agent- ${response['data']}');
|
||||
setState(() {
|
||||
getPartnerData = List<Map<String, dynamic>>.from(response['data']);
|
||||
print('API Data - $getPartnerData');
|
||||
|
||||
// 1. Convert the response to a list
|
||||
final rawList = List<Map<String, dynamic>>.from(response['data']);
|
||||
print('API Data - rawList');
|
||||
// 2. Filter out items where agent_id is null or empty
|
||||
getPartnerData = rawList.where((item) {
|
||||
final id = item['agent_id'];
|
||||
return id != null && id.toString().isNotEmpty;
|
||||
}).toList();
|
||||
print('Filtered API Data (No Null IDs) - $getPartnerData');
|
||||
// 3. Sync the filtered data to your display list
|
||||
filteredPartnerData = List.from(getPartnerData);
|
||||
print('originalAgentData - $filteredPartnerData');
|
||||
});
|
||||
} else {
|
||||
getPartnerData = [];
|
||||
@ -499,18 +507,35 @@ class _DateFilterRowState extends ConsumerState<DateFilterRowPayout> {
|
||||
},
|
||||
// constraints: BoxConstraints(),
|
||||
),
|
||||
|
||||
// onChanged: (val) {
|
||||
// if (val != null) {
|
||||
// print("Selected Broker : ${val['name']}");
|
||||
// print("Id: ${val['id']}");
|
||||
// // selectedBroker = val['id'];
|
||||
// widget.onBrokerChanged?.call(val['id'].toString());
|
||||
// // widget.onBrokerChanged?.call(val['id']);
|
||||
// // controllers['agentId']?.text = val['agent_code'];
|
||||
// // agentId = agent['id'];
|
||||
// }
|
||||
// },
|
||||
onChanged: (val) {
|
||||
if (val != null) {
|
||||
print("Selected Broker : ${val['name']}");
|
||||
print("Id: ${val['id']}");
|
||||
// selectedBroker = val['id'];
|
||||
widget.onBrokerChanged?.call(val['id'].toString());
|
||||
// widget.onBrokerChanged?.call(val['id']);
|
||||
// controllers['agentId']?.text = val['agent_code'];
|
||||
// agentId = agent['id'];
|
||||
String selectedId = val['id'].toString();
|
||||
|
||||
// 1. Notify parent of the change
|
||||
widget.onBrokerChanged?.call(selectedId);
|
||||
|
||||
// 2. Clear current partner list so user doesn't see old data
|
||||
setState(() {
|
||||
filteredPartnerData = [];
|
||||
});
|
||||
|
||||
// 3. Fetch new agents based on this broker
|
||||
getAgentList(managerId!, selectedId);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -523,7 +548,7 @@ class _DateFilterRowState extends ConsumerState<DateFilterRowPayout> {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text("Referer *", style: _textStyle),
|
||||
Text("Referer", style: _textStyle),
|
||||
SizedBox(height: 5),
|
||||
SizedBox(
|
||||
height: 35,
|
||||
@ -536,7 +561,7 @@ class _DateFilterRowState extends ConsumerState<DateFilterRowPayout> {
|
||||
// : null,
|
||||
selectedItems: filteredPartnerData
|
||||
.where(
|
||||
(item) => (widget.selectedParnter ?? []).contains(item['id']),
|
||||
(item) => (widget.selectedParnter ?? []).contains(item['agent_id']),
|
||||
)
|
||||
.toList(),
|
||||
|
||||
@ -549,26 +574,27 @@ class _DateFilterRowState extends ConsumerState<DateFilterRowPayout> {
|
||||
return filteredPartnerData;
|
||||
},
|
||||
|
||||
itemAsString: (val) => val['name'].toString(), // what to show
|
||||
itemAsString: (val) => // what to show
|
||||
"${val['agent_name']} | ${val['unused_commission_amount']} (${val['total_policies']})",
|
||||
compareFn: (item, selectedItem) =>
|
||||
item['id'] == selectedItem['id'], // ✅ compare by id
|
||||
item['agent_id'] == selectedItem['agent_id'], // ✅ compare by id
|
||||
// validator: (val) {
|
||||
// if (val == null) {
|
||||
// return "Required"; // ✅ error message
|
||||
// }
|
||||
// return null;
|
||||
// },
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return ""; // 👈 triggers error border, no text
|
||||
}
|
||||
return null;
|
||||
|
||||
// validator: (val) {
|
||||
// if (val == null || val.isEmpty) {
|
||||
// return "Required";
|
||||
// return ""; // 👈 triggers error border, no text
|
||||
// }
|
||||
// return null;
|
||||
},
|
||||
//
|
||||
// // if (val == null || val.isEmpty) {
|
||||
// // return "Required";
|
||||
// // }
|
||||
// // return null;
|
||||
// },
|
||||
|
||||
decoratorProps: DropDownDecoratorProps(
|
||||
decoration:
|
||||
@ -641,7 +667,7 @@ class _DateFilterRowState extends ConsumerState<DateFilterRowPayout> {
|
||||
vertical: 3,
|
||||
),
|
||||
child: Text(
|
||||
item['name'].toString(),
|
||||
"${item['agent_name']} | ${item['unused_commission_amount']} (${item['total_policies']})",
|
||||
style: GoogleFonts.inter(fontSize: 12, color: Colors.black),
|
||||
),
|
||||
);
|
||||
@ -652,7 +678,7 @@ class _DateFilterRowState extends ConsumerState<DateFilterRowPayout> {
|
||||
// selectedPartnerIds = selectedVals
|
||||
// .map((v) => v['id'].toString())
|
||||
// .toList();
|
||||
final ids = selectedVals.map((v) => v['id'].toString()).toList();
|
||||
final ids = selectedVals.map((v) => v['agent_id'].toString()).toList();
|
||||
print("Selected PArnter IDs: $widget.selectedPartnerIds");
|
||||
widget.onPartnerChanges?.call(ids);
|
||||
// widget.onPartnerChanges!(v['id']);
|
||||
|
||||
@ -138,7 +138,7 @@ class _PayOutScreenState extends ConsumerState<PayOutScreen> {
|
||||
|
||||
print('invoiceID $invoiceID');
|
||||
print('brokerID $brokerID');
|
||||
_loadEditData(invoiceID, brokerID);
|
||||
_loadEditData(invoiceID, brokerID,managerId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -230,7 +230,7 @@ class _PayOutScreenState extends ConsumerState<PayOutScreen> {
|
||||
});
|
||||
}
|
||||
|
||||
void _loadEditData(String invoiceID, brokerID) async {
|
||||
void _loadEditData(String invoiceID, brokerID, managerID) async {
|
||||
setState(() => isLoadingEditData = true);
|
||||
print('_loadEditData');
|
||||
|
||||
@ -238,6 +238,7 @@ class _PayOutScreenState extends ConsumerState<PayOutScreen> {
|
||||
// "id": invoiceID,
|
||||
"invoice_id": invoiceID,
|
||||
"broker_id": int.tryParse(brokerID ?? ''),
|
||||
"manager_id": managerID
|
||||
|
||||
// "issued_date": formattedTillDate,
|
||||
};
|
||||
@ -442,6 +443,28 @@ class _PayOutScreenState extends ConsumerState<PayOutScreen> {
|
||||
);
|
||||
}
|
||||
|
||||
// if (dashboardKey == 'f' &&
|
||||
// isDashboardInitialLoad &&
|
||||
// SelectedStatus == "P") {
|
||||
//
|
||||
//
|
||||
// fromDt = "";toDt = "";
|
||||
// isDashboardInitialLoad = false;
|
||||
//
|
||||
// } else if (dashboardKey == 'f' && isDashboardInitialLoad && SelectedStatus != '') {
|
||||
// fromDt = "";toDt = "";
|
||||
// isDashboardInitialLoad = false;
|
||||
// } else if (fromDateVal.isEmpty && toDateVal.isEmpty) {
|
||||
// // Default fallback
|
||||
// final today = DateTime.now();
|
||||
// fromDt = DateFormat('dd-MM-yyyy').format(today.subtract(const Duration(days: 5)));
|
||||
// toDt = DateFormat('dd-MM-yyyy').format(today);
|
||||
// } else {
|
||||
// // ✅ USER SELECTED DATE — ALWAYS RESPECT THIS
|
||||
// fromDt = fromDateVal;
|
||||
// toDt = toDateVal;
|
||||
// }
|
||||
|
||||
// Load policies (simulate API)
|
||||
Future<void> loadPolicies() async {
|
||||
print('loadPolicies');
|
||||
@ -454,7 +477,9 @@ class _PayOutScreenState extends ConsumerState<PayOutScreen> {
|
||||
"from_date": controllers['startDate']?.text,
|
||||
"to_date": controllers['endDate']?.text,
|
||||
"broker_id": int.tryParse(selectedBrokerID ?? ''),
|
||||
"agent_id": agentIds,
|
||||
"manager_id": managerId,
|
||||
if (agentIds != null && agentIds.isNotEmpty) "agent_id": agentIds,
|
||||
// "agent_id": agentIds,
|
||||
// "issued_date": formattedTillDate,
|
||||
};
|
||||
final response = await apiService.getCommissionRateList(jsondata);
|
||||
@ -1296,6 +1321,8 @@ class _PayOutScreenState extends ConsumerState<PayOutScreen> {
|
||||
}
|
||||
|
||||
double _calculateTotalCommission() {
|
||||
print("ASD");
|
||||
print(filteredPolicies);
|
||||
double total = 0.0;
|
||||
|
||||
for (var p in filteredPolicies) {
|
||||
|
||||
@ -44,12 +44,16 @@ import 'enquiry_inline_SubRow.dart';
|
||||
import 'multi_file_list.dart';
|
||||
|
||||
class EnquiryListStaffInline extends ConsumerStatefulWidget {
|
||||
|
||||
const EnquiryListStaffInline({super.key});
|
||||
@override
|
||||
ConsumerState<EnquiryListStaffInline> createState() => EnquiryStaffState();
|
||||
}
|
||||
|
||||
class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
// bool fromDashboard = false;
|
||||
bool _dashboardInitHandled = false;
|
||||
bool _resetKeyEnable = false;
|
||||
int currentPage = 1;
|
||||
int itemsPerPage = 10;
|
||||
// int itemsPerPage = 5;
|
||||
@ -234,6 +238,26 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
//---------------------- Assign Staff Ends -------------------------------- //
|
||||
//---------------------- Enquiry TAB Initializations Ends -------------------------------- //
|
||||
|
||||
// @override
|
||||
// void didChangeDependencies() {
|
||||
// super.didChangeDependencies();
|
||||
|
||||
// if (_dashboardInitHandled) return;
|
||||
// _dashboardInitHandled = true;
|
||||
|
||||
// final extra = GoRouterState.of(context).extra;
|
||||
|
||||
// if (extra is Map<String, dynamic>) {
|
||||
// fromDashboard = extra['fromDashboard'] ?? false;
|
||||
// }
|
||||
|
||||
// // 🔥 IMPORTANT: Clear date pickers ONLY when coming from dashboard
|
||||
// if (fromDashboard) {
|
||||
// controllers['startDate']?.clear();
|
||||
// controllers['endDate']?.clear();
|
||||
// }
|
||||
// }
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@ -505,6 +529,9 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
}
|
||||
|
||||
Future<void> refrshfilterDateRange() async {
|
||||
setState(() {
|
||||
_resetKeyEnable = true;
|
||||
});
|
||||
print('refrshfilterDateRange');
|
||||
// setState(() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
@ -624,16 +651,21 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
final dateFormat = DateFormat('dd-MM-yyyy');
|
||||
|
||||
if (dashboardKey == 'fromDashboard' && SelectedStatus == "PrevPending") {
|
||||
setState(() {
|
||||
_dashboardInitHandled = true;
|
||||
});
|
||||
// For PREV PENDING → set date range until yesterday
|
||||
final today = DateTime.now();
|
||||
print('A813 => Fns called => $managerId | $role');
|
||||
// Change to dd-MM-yyyy
|
||||
final dateFormat = DateFormat('dd-MM-yyyy');
|
||||
// final dateFormat = DateFormat('dd-MM-yyyy');
|
||||
//
|
||||
// final yesterday = today.subtract(Duration(days: 1));
|
||||
|
||||
final yesterday = today.subtract(Duration(days: 1));
|
||||
|
||||
fromDt = dateFormat.format(yesterday.subtract(Duration(days: 15)));
|
||||
toDt = dateFormat.format(yesterday);
|
||||
fromDt = _dashboardInitHandled ? controllers['startDate']?.text : '';
|
||||
toDt = _dashboardInitHandled ? controllers['endDate']?.text : '';
|
||||
// fromDt = dateFormat.format(yesterday.subtract(Duration(days: 15)));
|
||||
// toDt = dateFormat.format(yesterday);
|
||||
|
||||
print('PrevPending FROM TO - $fromDt - $toDt');
|
||||
} else if (dashboardKey == 'fromDashboard' &&
|
||||
@ -645,8 +677,11 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
// Change to dd-MM-yyyy
|
||||
final dateFormat = DateFormat('dd-MM-yyyy');
|
||||
|
||||
fromDt = dateFormat.format(today);
|
||||
toDt = dateFormat.format(today);
|
||||
// fromDt = dateFormat.format(today);
|
||||
// toDt = dateFormat.format(today);
|
||||
|
||||
fromDt = _dashboardInitHandled ? controllers['startDate']?.text : '';
|
||||
toDt = _dashboardInitHandled ? controllers['endDate']?.text : '';
|
||||
|
||||
print('PrevPending FROM TO - $fromDt - $toDt');
|
||||
} else if (dashboardKey != 'fromDashboard' &&
|
||||
@ -664,9 +699,26 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
} else {
|
||||
print('A1113 => Fns called => $managerId | $role');
|
||||
print('Enq 1- $fromDt - $toDt');
|
||||
|
||||
if(_resetKeyEnable = true){
|
||||
final dateFormat = DateFormat('dd-MM-yyyy');
|
||||
final today = DateTime.now();
|
||||
final yesterday = today.subtract(Duration(days: 1));
|
||||
|
||||
fromDt = dateFormat.format(yesterday.subtract(Duration(days: 15)));
|
||||
toDt = dateFormat.format(yesterday);
|
||||
setState(() {
|
||||
controllers['startDate']?.text = fromDt;
|
||||
controllers['endDate']?.text = toDt;
|
||||
});
|
||||
|
||||
} else {
|
||||
fromDt = fromDateVal;
|
||||
toDt = toDateVal;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
print('Enq 2- $fromDt - $toDt');
|
||||
String finalStatus = SelectedStatus;
|
||||
print('finalStatus1 - $finalStatus');
|
||||
@ -678,8 +730,8 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
managerId,
|
||||
userId,
|
||||
role,
|
||||
fromDate: fromDt,
|
||||
toDate: toDt,
|
||||
fromDate: _dashboardInitHandled ? controllers['startDate']?.text : fromDt,
|
||||
toDate: _dashboardInitHandled ? controllers['endDate']?.text : toDt,
|
||||
// selectedStatus: (finalStatus != '' && finalStatus != 'PrevPending')
|
||||
// ? finalStatus
|
||||
// : '',
|
||||
@ -700,8 +752,13 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
print('A1213 => Fns called => $managerId | $role');
|
||||
|
||||
setState(() {
|
||||
_resetKeyEnable = false;
|
||||
|
||||
controllers['startDate']?.text = fromDate;
|
||||
controllers['endDate']?.text = toDate;
|
||||
|
||||
|
||||
|
||||
if (data is List) {
|
||||
getStaffData = List<Map<String, dynamic>>.from(data);
|
||||
|
||||
@ -1817,7 +1874,7 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
// });
|
||||
},
|
||||
child: ThemedSearchField(
|
||||
hintText: 'Search *',
|
||||
hintText: 'Search',
|
||||
backgroundColor: Color(0xFFFFFFFF),
|
||||
txtHeight: 30,
|
||||
controller: _searchStaffController,
|
||||
@ -1851,11 +1908,11 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
txt: !ResponsiveLayout.isMobile(context) ? true : false,
|
||||
displayHeaders: [
|
||||
"Received Date & Time",
|
||||
"Partner",
|
||||
"Assigned To",
|
||||
"Partner",
|
||||
"Insurer",
|
||||
"Vehicle.No.",
|
||||
"Insured Name",
|
||||
"Vehicle.No.",
|
||||
"Assigned Date & Time",
|
||||
"Premium",
|
||||
"Payment Mode",
|
||||
@ -1864,14 +1921,14 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
],
|
||||
keys: [
|
||||
"created_on",
|
||||
"agent_name",
|
||||
"assigned_to_name",
|
||||
"agent_name",
|
||||
"insurer_short_name",
|
||||
"reg_no",
|
||||
"insured_name",
|
||||
"reg_no",
|
||||
"updated_on",
|
||||
"premium_amount",
|
||||
"payment_mode",
|
||||
"payment_mode_value",
|
||||
"policy_number",
|
||||
"status",
|
||||
],
|
||||
@ -2417,9 +2474,6 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
);
|
||||
}
|
||||
|
||||
String normalizedStatus(dynamic value) {
|
||||
return value?.toString().trim().toLowerCase() ?? '';
|
||||
}
|
||||
// Helper: Status cell with conditional actions
|
||||
Widget _buildStatusCell(
|
||||
Map<String, dynamic> item,
|
||||
@ -2484,13 +2538,7 @@ class EnquiryStaffState extends ConsumerState<EnquiryListStaffInline> {
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
(item['enquiry_status'] ?? '-')
|
||||
.toString()
|
||||
.toLowerCase()
|
||||
.split(' ')
|
||||
.where((w) => w.isNotEmpty)
|
||||
.map((w) => w[0].toUpperCase() + w.substring(1))
|
||||
.join(' '),
|
||||
item['enquiry_status'] ?? '-',
|
||||
style: GoogleFonts.inter(
|
||||
fontSize: 10,
|
||||
color: Color(0XFF1e293b),
|
||||
|
||||
@ -174,22 +174,23 @@ class ExcelExporter {
|
||||
final rowMap = reversedData[i];
|
||||
final row = <CellValue?>[];
|
||||
|
||||
// Inside ExcelExporter class -> exportToExcel method
|
||||
for (var key in keys) {
|
||||
dynamic value;
|
||||
if (key == 'sno' ||
|
||||
key.toLowerCase() == 's.no' ||
|
||||
key.toLowerCase() == 'sno.') {
|
||||
value = i + 1; // serial number (descending)
|
||||
|
||||
if (key == 'sno' || key.toLowerCase() == 's.no' || key.toLowerCase() == 'sno.') {
|
||||
value = i + 1;
|
||||
} else if (key.toLowerCase() == 'is_active') {
|
||||
// ✅ Handle Active/Inactive display
|
||||
final rawVal = rowMap[key];
|
||||
value = (rawVal == 1 || rawVal == '1') ? 'Active' : 'Inactive';
|
||||
} else {
|
||||
// FIX: Ensure we extract the value and check if it's "null" as a string
|
||||
value = rowMap[key];
|
||||
if (value == "null") value = null;
|
||||
}
|
||||
|
||||
if (value == null) {
|
||||
row.add(TextCellValue('-'));
|
||||
if (value == null || value.toString().trim().isEmpty) {
|
||||
row.add(TextCellValue('-')); // This ensures the column isn't empty
|
||||
} else if (value is int) {
|
||||
row.add(IntCellValue(value));
|
||||
} else if (value is double) {
|
||||
@ -198,10 +199,10 @@ class ExcelExporter {
|
||||
row.add(TextCellValue(value.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
sheet.appendRow(row);
|
||||
}
|
||||
|
||||
|
||||
final excelBytes = excel.encode();
|
||||
if (excelBytes == null) throw Exception('Failed to encode Excel file');
|
||||
|
||||
|
||||
@ -282,7 +282,7 @@ class _DateFilterRowState extends ConsumerState<DateFilterRow> {
|
||||
'dd-MM-yyyy',
|
||||
).format(date);
|
||||
// controllers['date']?.text = date as String;
|
||||
Future.microtask(() => widget.onFilter());
|
||||
// Future.microtask(() => widget.onFilter());
|
||||
},
|
||||
),
|
||||
),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user