💄 Optimize publisher page filter select date

This commit is contained in:
2025-11-02 23:34:08 +08:00
parent 5a23eb1768
commit d62b2bed80
2 changed files with 80 additions and 49 deletions

View File

@@ -1317,5 +1317,6 @@
"fromDate": "From Date",
"toDate": "To Date",
"popularity": "Popularity",
"descendingOrder": "Descending Order"
"descendingOrder": "Descending Order",
"selectDate": "Select Date"
}

View File

@@ -487,64 +487,94 @@ class _PublisherCategoryTabWidget extends StatelessWidget {
Row(
children: [
Expanded(
child: TextField(
decoration: InputDecoration(
labelText: 'fromDate'.tr(),
hintText: 'YYYY-MM-DD',
border: const OutlineInputBorder(
borderRadius: BorderRadius.all(
Radius.circular(12),
child: InkWell(
onTap: () async {
final pickedDate = await showDatePicker(
context: context,
initialDate:
periodStart.value != null
? DateTime.fromMillisecondsSinceEpoch(
periodStart.value! * 1000,
)
: DateTime.now(),
firstDate: DateTime(2000),
lastDate: DateTime.now().add(
const Duration(days: 365),
),
),
contentPadding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 8,
),
),
onChanged: (value) {
if (value.isEmpty) {
periodStart.value = null;
} else {
try {
final date = DateTime.parse(value);
periodStart.value =
date.millisecondsSinceEpoch ~/ 1000;
} catch (_) {
periodStart.value = null;
}
);
if (pickedDate != null) {
periodStart.value =
pickedDate.millisecondsSinceEpoch ~/ 1000;
}
},
child: InputDecorator(
decoration: InputDecoration(
labelText: 'fromDate'.tr(),
border: const OutlineInputBorder(
borderRadius: BorderRadius.all(
Radius.circular(12),
),
),
contentPadding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 8,
),
suffixIcon: const Icon(Symbols.calendar_today),
),
child: Text(
periodStart.value != null
? DateTime.fromMillisecondsSinceEpoch(
periodStart.value! * 1000,
).toString().split(' ')[0]
: 'selectDate'.tr(),
),
),
),
),
const Gap(8),
Expanded(
child: TextField(
decoration: InputDecoration(
labelText: 'toDate'.tr(),
hintText: 'YYYY-MM-DD',
border: const OutlineInputBorder(
borderRadius: BorderRadius.all(
Radius.circular(12),
child: InkWell(
onTap: () async {
final pickedDate = await showDatePicker(
context: context,
initialDate:
periodEnd.value != null
? DateTime.fromMillisecondsSinceEpoch(
periodEnd.value! * 1000,
)
: DateTime.now(),
firstDate: DateTime(2000),
lastDate: DateTime.now().add(
const Duration(days: 365),
),
),
contentPadding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 8,
),
),
onChanged: (value) {
if (value.isEmpty) {
periodEnd.value = null;
} else {
try {
final date = DateTime.parse(value);
periodEnd.value =
date.millisecondsSinceEpoch ~/ 1000;
} catch (_) {
periodEnd.value = null;
}
);
if (pickedDate != null) {
periodEnd.value =
pickedDate.millisecondsSinceEpoch ~/ 1000;
}
},
child: InputDecorator(
decoration: InputDecoration(
labelText: 'toDate'.tr(),
border: const OutlineInputBorder(
borderRadius: BorderRadius.all(
Radius.circular(12),
),
),
contentPadding: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 8,
),
suffixIcon: const Icon(Symbols.calendar_today),
),
child: Text(
periodEnd.value != null
? DateTime.fromMillisecondsSinceEpoch(
periodEnd.value! * 1000,
).toString().split(' ')[0]
: 'selectDate'.tr(),
),
),
),
),
],