refactor(empty-state): 空状态支持内容居中

This commit is contained in:
Zhou Weidong committed 2026-11-02 14:44:38 +08:00
1 parent 59fbd33059
commit 7463d3ee26
8 files changed
+131 -80

No files matched your search

+25 -23
View File
@@ -26,7 +26,6 @@ import 'widgets/watch_record_card.dart';
const double _pageHorizontal = 14;
const double _statsFontSize = 12;
const double _emptyListHeight = 360;
const double _loadMoreThreshold = 240;
/// 独立观看记录页。
@@ -113,31 +112,22 @@ class _WatchRecordsBodyState extends State<_WatchRecordsBody> {
);
}
if (controller.error != null && controller.records.isEmpty) {
return _refreshable(
children: [
SizedBox(
height: _emptyListHeight,
child: _FailureState(
message: errorText(l10n, controller.error, l10n.progressError),
onRetry: controller.load,
),
),
],
return _refreshableState(
child: _FailureState(
message: errorText(l10n, controller.error, l10n.progressError),
onRetry: controller.load,
),
);
}
if (controller.records.isEmpty) {
return _refreshable(
children: [
SizedBox(
height: _emptyListHeight,
child: EmptyState(
key: const Key('watch-records-empty'),
icon: Icons.history_rounded,
title: l10n.noWatchRecords,
subtitle: l10n.emptyHint,
),
),
],
return _refreshableState(
child: EmptyState(
key: const Key('watch-records-empty'),
icon: Icons.history_rounded,
title: l10n.noWatchRecords,
subtitle: l10n.emptyHint,
stretchContent: true,
),
);
}
return _refreshable(
@@ -184,6 +174,17 @@ class _WatchRecordsBodyState extends State<_WatchRecordsBody> {
);
}
Widget _refreshableState({required Widget child}) {
return AppPullToRefresh(
onRefresh: controller.load,
child: CustomScrollView(
key: const Key('watch-records-empty-scroll'),
physics: AppPullToRefresh.physics,
slivers: [SliverFillRemaining(hasScrollBody: false, child: child)],
),
);
}
bool _onScroll(ScrollNotification notification) {
if (notification.depth != 0) return false;
final reachedBottom =
@@ -303,6 +304,7 @@ class _FailureState extends StatelessWidget {
actionLabel: l10n.retry,
actionKey: const Key('watch-records-retry'),
onAction: () => unawaited(onRetry()),
stretchContent: true,
);
}
}