refactor(app): 迁移 4 个页面到共享 EmptyStateWidget + ErrorStateWidget
迁移统计: - discover_page: _buildError → ErrorStateWidget, _buildEmptyHint → EmptyStateWidget - sticker_library_page: 错误 + 空列表 → 共享组件 - class_page: 错误/班级列表空/日记墙空/话题空 → 共享组件 (4 处) - calendar_page: CalendarError → ErrorStateWidget 统一体验: 所有页面空状态使用一致的 icon + title + subtitle + CTA 布局
This commit is contained in:
@@ -5,6 +5,8 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:nuanji_app/core/theme/app_colors.dart';
|
||||
import 'package:nuanji_app/core/theme/app_radius.dart';
|
||||
import 'package:nuanji_app/data/remote/api_client.dart';
|
||||
import '../../../widgets/empty_state_widget.dart';
|
||||
import '../../../widgets/error_state_widget.dart';
|
||||
import '../bloc/sticker_bloc.dart';
|
||||
|
||||
/// 贴纸库页面 — 分类浏览贴纸包
|
||||
@@ -64,18 +66,10 @@ class _StickerLibraryPageState extends State<StickerLibraryPage> {
|
||||
}
|
||||
|
||||
if (state.errorMessage != null) {
|
||||
return Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(Icons.error_outline, size: 48, color: colorScheme.error),
|
||||
const SizedBox(height: 16),
|
||||
FilledButton.tonal(
|
||||
onPressed: _bloc.load,
|
||||
child: const Text('重试'),
|
||||
),
|
||||
],
|
||||
),
|
||||
return ErrorStateWidget(
|
||||
message: state.errorMessage ?? '加载失败',
|
||||
onRetry: _bloc.load,
|
||||
icon: Icons.error_outline,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -169,7 +163,10 @@ class _StickerLibraryPageState extends State<StickerLibraryPage> {
|
||||
// ---- 贴纸包网格 ----
|
||||
Expanded(
|
||||
child: state.filteredPacks.isEmpty
|
||||
? const Center(child: Text('暂无贴纸包'))
|
||||
? const EmptyStateWidget(
|
||||
icon: Icons.sticky_note_2_outlined,
|
||||
title: '暂无贴纸包',
|
||||
)
|
||||
: GridView.builder(
|
||||
padding: const EdgeInsets.all(16),
|
||||
gridDelegate:
|
||||
|
||||
Reference in New Issue
Block a user