import 'package:flutter_common/widget/common_widget.dart'; import 'package:provider/provider.dart'; import 'package:blog_app/provider/blog.dart'; import 'package:blog_app/widget/blog.dart'; import 'package:flutter/material.dart'; class CategoryPage extends StatefulWidget { const CategoryPage({super.key}); @override State createState() => _CategoryPageState(); } class _CategoryPageState extends State { @override void initState() { super.initState(); // 初始化加载数据 WidgetsBinding.instance.addPostFrameCallback((_) { context.read().refreshBlogCategory(); }); } Widget _buildContent(BlogProvider provider) { if (provider.error != null) { return buildErrorInfo( errorInfo: provider.error!, onPressed: () => provider.refreshBlogByYear(), ); } return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ buildCategoryTitle(context, provider.categoryList.length), SizedBox(height: 10), // 分类列表 Expanded( child: ListView.separated( itemCount: provider.categoryList.length, separatorBuilder: (context, index) => SizedBox(height: 8), itemBuilder: (context, index) { final category = provider.categoryList[index]; return buildCategoryCard(context, category); }, ), ), ], ); } @override Widget build(BuildContext context) { final blogProvider = context.watch(); return Column( children: [ Expanded( child: Stack( children: [ if (blogProvider.isLoading) buildLoadingIndicator() else _buildContent(blogProvider), ], ), ), ], ); } }