|
|
@@ -113,8 +113,8 @@ class _ExpenseApplyListPageState extends ConsumerState<ExpenseApplyListPage> {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- return Scaffold(
|
|
|
- body: Column(children: [
|
|
|
+ return Stack(children: [
|
|
|
+ Column(children: [
|
|
|
Container(
|
|
|
decoration: BoxDecoration(
|
|
|
color: colors.bgCard,
|
|
|
@@ -122,9 +122,9 @@ class _ExpenseApplyListPageState extends ConsumerState<ExpenseApplyListPage> {
|
|
|
),
|
|
|
child: Column(mainAxisSize: MainAxisSize.min, children: [
|
|
|
Padding(padding: const EdgeInsets.fromLTRB(12, 8, 12, 0), child: Row(children: [
|
|
|
- Expanded(child: GestureDetector(onTap: () => _pickDate(_startDateCtrl), child: _dateChip(_startDateCtrl, l10n.get('filterStartDate'), tdTheme, colors))),
|
|
|
+ Expanded(child: GestureDetector(behavior: HitTestBehavior.opaque, onTap: () => _pickDate(_startDateCtrl), child: _dateChip(_startDateCtrl, l10n.get('filterStartDate'), tdTheme, colors))),
|
|
|
const SizedBox(width: 8), Text('—', style: TextStyle(fontSize: 14, color: colors.textSecondary)), const SizedBox(width: 8),
|
|
|
- Expanded(child: GestureDetector(onTap: () => _pickDate(_endDateCtrl), child: _dateChip(_endDateCtrl, l10n.get('filterEndDate'), tdTheme, colors))),
|
|
|
+ Expanded(child: GestureDetector(behavior: HitTestBehavior.opaque, onTap: () => _pickDate(_endDateCtrl), child: _dateChip(_endDateCtrl, l10n.get('filterEndDate'), tdTheme, colors))),
|
|
|
])),
|
|
|
const SizedBox(height: 8),
|
|
|
Padding(padding: const EdgeInsets.fromLTRB(12, 0, 12, 8), child: Row(children: [
|
|
|
@@ -154,13 +154,16 @@ class _ExpenseApplyListPageState extends ConsumerState<ExpenseApplyListPage> {
|
|
|
),
|
|
|
Expanded(child: Container(color: colors.bgPage, child: _firstBuild ? const Center(child: SkeletonLoadingList()) : _ExpenseApplyListContent(refreshCtrl: _refreshCtrl, onRefresh: _doRefresh))),
|
|
|
]),
|
|
|
- floatingActionButton: FloatingActionButton(
|
|
|
- onPressed: () => context.push('/report/expense-apply-detail'),
|
|
|
- backgroundColor: colors.primary,
|
|
|
- shape: const CircleBorder(),
|
|
|
- child: const Icon(Icons.bar_chart, color: Colors.white),
|
|
|
+ Positioned(
|
|
|
+ right: 16, bottom: 16,
|
|
|
+ child: FloatingActionButton(
|
|
|
+ onPressed: () => context.push('/report/expense-apply-detail'),
|
|
|
+ backgroundColor: colors.primary,
|
|
|
+ shape: const CircleBorder(),
|
|
|
+ child: const Icon(Icons.bar_chart, color: Colors.white),
|
|
|
+ ),
|
|
|
),
|
|
|
- );
|
|
|
+ ]);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -173,7 +176,7 @@ class _ExpenseApplyListContent extends ConsumerWidget {
|
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
|
final r = ResponsiveHelper.of(context);
|
|
|
final itemsAsync = ref.watch(expenseApplyMyListProvider(''));
|
|
|
- print('[TBOSS_OA][ExpenseApply] Content build: isLoading=${itemsAsync.isLoading}, hasValue=${itemsAsync.hasValue}, isReloading=${itemsAsync.isReloading}');
|
|
|
+ debugPrint('[TBOSS_OA][ExpenseApply] Content build: isLoading=${itemsAsync.isLoading}, hasValue=${itemsAsync.hasValue}, isReloading=${itemsAsync.isReloading}');
|
|
|
if (itemsAsync.isLoading && !itemsAsync.hasValue) return Center(child: ConstrainedBox(constraints: BoxConstraints(maxWidth: r.listMaxWidth), child: const SkeletonLoadingList()));
|
|
|
return Center(child: ConstrainedBox(constraints: BoxConstraints(maxWidth: r.listMaxWidth), child: EasyRefresh(controller: refreshCtrl, header: TDRefreshHeader(), onRefresh: onRefresh, child: _buildContent(itemsAsync, context, ref))));
|
|
|
}
|