feat:增加加载中显示
This commit is contained in:
@@ -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),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user