import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'menu_item.dart'; class MenuCard extends StatelessWidget { final String title; final List children; const MenuCard({ super.key, required this.title, required this.children, }); @override Widget build(BuildContext context) { // 定义文本样式 TextStyle textStyle = TextStyle(fontSize: 24,color: Colors.black87); // 使用 TextPainter 计算文本的高度 TextPainter textPainter = TextPainter( text: TextSpan(text: '自定义标题', style: textStyle), textDirection: TextDirection.ltr, ); textPainter.layout(); return Container( margin: EdgeInsets.all(10), decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.circular(20)), constraints: BoxConstraints(minWidth: double.infinity,minHeight: 100), child: Column( children: [ Container( margin: EdgeInsets.all(5), padding: EdgeInsets.all(5), constraints: BoxConstraints( minWidth: double.infinity, minHeight: 20 ), child: Row( children: [ Container( decoration: BoxDecoration( color: Colors.blue, borderRadius: BorderRadius.circular(10) ), height: (textPainter.height-5), // 装饰块的高度与文本高度相同 width: 8, ), // 标题左侧装饰块, SizedBox(width: 10,), Text(title,style: textStyle) ], ) ), GridView( shrinkWrap: true, // 使 GridView 的高度适应子部件 physics: NeverScrollableScrollPhysics(), // 禁用滚动 gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, childAspectRatio: 1.0), children: children, ), ], ) ); } }