import 'package:flutter/material.dart'; import 'package:flutter_common/widget/common_widget.dart'; import 'package:food_hub_app/provider/food_provider.dart'; import 'package:food_hub_app/widgets/recipe/card.dart'; import 'package:provider/provider.dart'; class RecipeList extends StatefulWidget { const RecipeList({super.key}); @override State createState() => _RecipeListState(); } class _RecipeListState extends State { @override void initState() { super.initState(); // 初始化加载数据 WidgetsBinding.instance.addPostFrameCallback((_) { context.read().refreshRecipeList(); context.read().queryCategoryList(); }); } Widget _buildRecipeList(FoodProvider provider) { return GridView.builder( padding: const EdgeInsets.only(bottom: 80), gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, crossAxisSpacing: 8, mainAxisSpacing: 8, childAspectRatio: 0.9, ), itemCount: provider.recipeSummaryList.length, itemBuilder: (context, index) { return RecipeCard(recipe: provider.recipeSummaryList[index]); }, ); } Widget _buildContent(FoodProvider provider) { if (provider.recipeSummaryList.isEmpty) { return buildEmptyData(); } else { return Column( children: [ Expanded(child: _buildRecipeList(provider)), ], ); } } @override Widget build(BuildContext context) { final provider = context.watch(); return Stack( children: [ if (provider.isLoading) buildLoadingIndicator() else _buildContent(provider), ], ); } }