Flutter初学者求助:如何用Stack组件实现该卡片设计?
Flutter 目标卡片设计实现方案
以下是完全匹配你需求的Flutter代码实现,用原生组件就能完成,初学者也能快速理解:
import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( backgroundColor: Colors.grey[100], body: Center( child: const CustomCard(), ), ), ); } } class CustomCard extends StatelessWidget { const CustomCard({super.key}); @override Widget build(BuildContext context) { return Container( width: 320, margin: const EdgeInsets.all(16), decoration: BoxDecoration( color: Colors.white, borderRadius: const BorderRadius.only( topLeft: Radius.circular(12), topRight: Radius.circular(12), ), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.2), spreadRadius: 2, blurRadius: 8, offset: const Offset(0, 3), ), ], ), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ // 左侧彩色侧边栏 Container( width: 8, decoration: const BoxDecoration( color: Color(0xFF2196F3), borderRadius: BorderRadius.only( topLeft: Radius.circular(12), ), ), ), // 卡片内容区域 Expanded( child: Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( "Title", style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, color: Colors.black87, ), ), const SizedBox(height: 8), Text( "Description text goes here. You can add multiple lines of content here as needed.", style: TextStyle( fontSize: 14, color: Colors.grey[600], ), ), const SizedBox(height: 16), // 底部操作按钮 Align( alignment: Alignment.centerRight, child: TextButton( onPressed: () {}, child: const Text( "View", style: TextStyle( color: Color(0xFF2196F3), fontWeight: FontWeight.w500, ), ), ), ), ], ), ), ), ], ), ); } }
关键细节说明
- 卡片主体:用
Container实现,通过BoxDecoration设置顶部圆角、白色背景和阴影,模拟悬浮效果,阴影参数可根据需求调整 - 左侧侧边栏:固定宽度的
Container,设置和卡片顶部左侧匹配的圆角,颜色用示例的蓝色(可替换成你需要的色值) - 内容布局:用
Row+Column组合,Expanded确保内容区域占满剩余宽度,Padding控制内边距让内容更规整 - 文本样式:标题用加粗字体突出,描述文本用灰色弱化,操作按钮颜色和侧边栏呼应,保持视觉统一
内容的提问来源于stack exchange,提问作者Khalid
相关产品推荐
相关产品推荐

