feat:增加加载中显示

This commit is contained in:
2025-11-16 00:09:39 +08:00
parent d512a77f5f
commit 47b6fb9937
15 changed files with 697 additions and 541 deletions

View File

@@ -1,5 +1,6 @@
import 'package:blog_app/apis/blog.dart';
import 'package:blog_app/models/blog.dart';
import 'package:blog_app/widget/common.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';
@@ -11,38 +12,34 @@ class CategoryPage extends StatefulWidget {
}
class _CategoryPageState extends State<CategoryPage> {
late List<BlogCategory> categories = [];
@override
void initState() {
super.initState();
_loadBlogCategory();
// 初始化加载数据
WidgetsBinding.instance.addPostFrameCallback((_) {
context.read<BlogProvider>().refreshBlogCategory();
});
}
Future<void> _loadBlogCategory() async {
try {
final result = await queryBlogCategoryApi();
setState(() {
categories = result;
});
} catch (e) {
throw Exception('获取博客分类失败: $e');
Widget _buildContent(BlogProvider provider) {
if (provider.error != null) {
return buildErrorInfo(
errorInfo: provider.error!,
onPressed: () => provider.refreshBlogByYear(),
);
}
}
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
buildCategoryTitle(context, categories.length),
buildCategoryTitle(context, provider.categoryList.length),
SizedBox(height: 10),
// 分类列表
Expanded(
child: ListView.builder(
itemCount: categories.length,
itemCount: provider.categoryList.length,
itemBuilder: (context, index) {
final category = categories[index];
final category = provider.categoryList[index];
return buildCategoryCard(context, category);
},
),
@@ -50,4 +47,24 @@ class _CategoryPageState extends State<CategoryPage> {
],
);
}
@override
Widget build(BuildContext context) {
final blogProvider = context.watch<BlogProvider>();
return Column(
children: [
Expanded(
child: Stack(
children: [
if (blogProvider.isLoading)
buildLoadingIndicator()
else
_buildContent(blogProvider),
],
),
),
],
);
}
}