diff --git a/lib/views/home.dart b/lib/views/home.dart index eeb927b..410292b 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -49,17 +49,9 @@ class _HomePage extends State { ) ], ), - backgroundColor: Color(0xFFF5F5F5), + // backgroundColor: Color(0xFFF5F5F5), drawer: SettingsDrawer(), - body: Padding(padding: EdgeInsets.all(4), child: tabPages[_currentIndex]), - // floatingActionButton: FloatingActionButton( - // backgroundColor: Theme.of(context).colorScheme.primary, - // onPressed: () => buildBottomSheet(context), - // shape: const CircleBorder(), - // mini: true, - // child: const Icon(Icons.add, color: Colors.white, size: 30), - // ), - // floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, + body: Padding(padding: EdgeInsets.all(10), child: tabPages[_currentIndex]), bottomNavigationBar: buildBottomNavBar( currentIndex: _currentIndex, onTap: (index) { diff --git a/lib/views/moment.dart b/lib/views/moment.dart index 3f70a19..a9b4897 100644 --- a/lib/views/moment.dart +++ b/lib/views/moment.dart @@ -79,9 +79,10 @@ class _MomentPageState extends State { void _scrollToTop() => scrollToTopAnimateTo(_scrollController); Widget _buildMomentList(FoodProvider provider) { - return ListView.builder( + return ListView.separated( controller: _scrollController, itemCount: provider.momentList.length, + separatorBuilder: (context, index) => SizedBox(height: 8), itemBuilder: (context, index) { return MomentCard(moment: provider.momentList[index]); }, diff --git a/lib/views/moment_form.dart b/lib/views/moment_form.dart index b79ddf1..463fa91 100644 --- a/lib/views/moment_form.dart +++ b/lib/views/moment_form.dart @@ -143,7 +143,7 @@ class _MomentFormPageState extends State { body: SingleChildScrollView( child: Padding( padding: EdgeInsets.all(5), - child: buildCard(context: context, child: _buildFormBuilder()), + child: BuildCard(child: _buildFormBuilder()), ), ), ); diff --git a/lib/views/recipe_detail.dart b/lib/views/recipe_detail.dart index 32102cb..1c17968 100644 --- a/lib/views/recipe_detail.dart +++ b/lib/views/recipe_detail.dart @@ -55,9 +55,8 @@ class _RecipeDetailState extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('菜谱信息')), - backgroundColor: Color(0xFFF5F5F5), body: SingleChildScrollView( - child: Padding(padding: EdgeInsets.all(5), child: _buildRecipeDetail()), + child: Padding(padding: EdgeInsets.all(10), child: _buildRecipeDetail()), ), ); } @@ -67,12 +66,14 @@ class _RecipeDetailState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ _buildTitleSection(), + SizedBox(height: 8), _buildInfoCard( context, icon: Icons.info, title: "基础信息", content: buildTag(context, recipe.category), ), + SizedBox(height: 8), _buildInfoCard( context, icon: Icons.shopping_cart, @@ -86,6 +87,7 @@ class _RecipeDetailState extends State { ], ), ), + SizedBox(height: 8), _buildInfoCard( context, icon: Icons.list, @@ -95,6 +97,7 @@ class _RecipeDetailState extends State { recipe.stepList.map((step) => _buildStepSection(step)).toList(), ), ), + SizedBox(height: 8), _buildInfoCard( context, icon: Icons.note, @@ -183,8 +186,7 @@ class _RecipeDetailState extends State { required String title, required Widget content, }) { - return buildCard( - context: context, + return BuildCard( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/views/record_form.dart b/lib/views/record_form.dart index 1318eef..5b064d9 100644 --- a/lib/views/record_form.dart +++ b/lib/views/record_form.dart @@ -297,11 +297,10 @@ class _RecordFormPageState extends State { onPressed: () => Navigator.pop(context), ), ), - backgroundColor: const Color(0xFFF5F5F5), body: SingleChildScrollView( child: Padding( - padding: EdgeInsets.all(5), - child: buildCard(context: context, child: _buildFormBuilder()), + padding: EdgeInsets.all(10), + child: BuildCard(child: _buildFormBuilder()), ), ), ); diff --git a/lib/views/stats.dart b/lib/views/stats.dart index e5c0859..d53ba72 100644 --- a/lib/views/stats.dart +++ b/lib/views/stats.dart @@ -31,8 +31,8 @@ class _StatsPage extends State { physics: const NeverScrollableScrollPhysics(), // 禁用网格自身滚动 crossAxisCount: 2, - // crossAxisSpacing: 5, - // mainAxisSpacing: 5, + crossAxisSpacing: 8, + mainAxisSpacing: 8, childAspectRatio: 2, children: [ StatisticCard( @@ -121,23 +121,20 @@ class _StatsPage extends State { return Column( children: [ _buildSummaryStats(provider), + SizedBox(height: 8), SizedBox( height: chartHeight, - child: buildCard( - context: context, - child: _buildRecordStats(provider), - ), + child: BuildCard(child: _buildRecordStats(provider)), ), + SizedBox(height: 8), SizedBox( height: chartHeight, - child: buildCard( - context: context, - child: _buildCategoryStats(provider), - ), + child: BuildCard(child: _buildCategoryStats(provider)), ), + SizedBox(height: 8), SizedBox( height: chartHeight, - child: buildCard(context: context, child: _buildRankStats(provider)), + child: BuildCard(child: _buildRankStats(provider)), ), ], ); diff --git a/lib/widgets/common/index.dart b/lib/widgets/common/index.dart index 6110ee3..f22200b 100644 --- a/lib/widgets/common/index.dart +++ b/lib/widgets/common/index.dart @@ -28,21 +28,25 @@ InputDecoration formInputDecoration({ ); } -Widget buildCard({required BuildContext context, required Widget child}) { - final colors = Theme.of(context).colorScheme; - return Card( - elevation: 0, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - child: Container( - width: double.infinity, +class BuildCard extends StatelessWidget { + final Widget? child; + + const BuildCard({super.key, this.child}); + + @override + Widget build(BuildContext context) { + final colors = Theme.of(context).colorScheme; + + return Container( decoration: BoxDecoration( - color: Colors.white, + color: colors.surfaceContainer, borderRadius: BorderRadius.circular(12), - // border: Border.all(color: colors.outline.withAlpha(50)), + // border: Border.all(color: colors.outline.withAlpha(50), width: 1), ), - child: Padding(padding: EdgeInsets.all(10), child: child), - ), - ); + padding: const EdgeInsets.all(16), + child: child, + ); + } } Widget buildEmptyData() { diff --git a/lib/widgets/moment/card.dart b/lib/widgets/moment/card.dart index c175a40..c87e477 100644 --- a/lib/widgets/moment/card.dart +++ b/lib/widgets/moment/card.dart @@ -12,8 +12,7 @@ class MomentCard extends StatelessWidget { @override Widget build(BuildContext context) { - return buildCard( - context: context, + return BuildCard( child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/widgets/recipe/calendar.dart b/lib/widgets/recipe/calendar.dart index 09c3154..8dd9e49 100644 --- a/lib/widgets/recipe/calendar.dart +++ b/lib/widgets/recipe/calendar.dart @@ -62,16 +62,16 @@ class _RecipeCalendarState extends State { if (provider.selectRecordList.isEmpty) buildEmptyData() else - ListView.builder( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - itemCount: provider.selectRecordList.length, - itemBuilder: (context, index) { - return _buildRecordItem( - context, - provider.selectRecordList[index], - ); - }, + Expanded( + child: ListView.builder( + itemCount: provider.selectRecordList.length, + itemBuilder: (context, index) { + return _buildRecordItem( + context, + provider.selectRecordList[index], + ); + }, + ), ), ], ); @@ -188,13 +188,9 @@ class _RecipeCalendarState extends State { Widget _buildContent(FoodProvider provider) { return Column( children: [ - buildCard(context: context, child: _recipeCalendar(provider)), - Expanded( - child: buildCard( - context: context, - child: _dailyItem(context, provider), - ), - ), + BuildCard(child: _recipeCalendar(provider)), + SizedBox(height: 8), + Expanded(child: BuildCard(child: _dailyItem(context, provider))), ], ); } diff --git a/lib/widgets/recipe/card.dart b/lib/widgets/recipe/card.dart index b0b94ec..4f03364 100644 --- a/lib/widgets/recipe/card.dart +++ b/lib/widgets/recipe/card.dart @@ -81,8 +81,7 @@ class RecipeCard extends StatelessWidget { ); } - return buildCard( - context: context, + return BuildCard( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/widgets/recipe/list.dart b/lib/widgets/recipe/list.dart index f5588a9..8f129b2 100644 --- a/lib/widgets/recipe/list.dart +++ b/lib/widgets/recipe/list.dart @@ -83,8 +83,9 @@ class _RecipeListState extends State { _buildSelectCategory(provider), SizedBox(height: 5), Expanded( - child: ListView.builder( + child: ListView.separated( itemCount: provider.recipeSummaryList.length, + separatorBuilder: (context, index) => SizedBox(height: 8), itemBuilder: (context, index) { return RecipeCard(recipe: provider.recipeSummaryList[index]); }, diff --git a/lib/widgets/recipe/timeline.dart b/lib/widgets/recipe/timeline.dart index 91fd989..273744a 100644 --- a/lib/widgets/recipe/timeline.dart +++ b/lib/widgets/recipe/timeline.dart @@ -16,8 +16,7 @@ class RecipeTimeline extends StatefulWidget { class _RecipeTimeline extends State { Widget buildTimelineCard(BuildContext context, FoodRecord record) { - return buildCard( - context: context, + return BuildCard( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -69,7 +68,10 @@ class _RecipeTimeline extends State { ); }, contentsBuilder: (context, index) { - return buildTimelineCard(context, recordList[index]); + return Padding( + padding: const EdgeInsets.symmetric(vertical: 4.0), + child: buildTimelineCard(context, recordList[index]), + ); }, ), ); diff --git a/lib/widgets/stats/card.dart b/lib/widgets/stats/card.dart index 8fb5023..e8ba197 100644 --- a/lib/widgets/stats/card.dart +++ b/lib/widgets/stats/card.dart @@ -20,8 +20,7 @@ class StatisticCard extends StatelessWidget { @override Widget build(BuildContext context) { - return buildCard( - context: context, + return BuildCard( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [