flutter中,需要设计一个表头,表头为一行,其中有7列。表头高度为22,长度为1747,表头中有7列,宽度依次为53,120,413,150,190,84,714,前6列颜色为RGB(37,49,80),最后一列为RGB(58,101,92),请给出设计
时间: 2024-10-20 12:04:33 浏览: 18
在 Flutter 中设计这样一个表头,你可以使用 `Row` 和 `Column` 组件结合 `Container` 来创建每个单元格,并利用 `CustomPaint` 或 `WidgetDecoration` 实现自定义背景色。这里是一个简化的示例代码:
```dart
import 'package:flutter/material.dart';
class CustomTableHeader extends StatelessWidget {
final List<double> columnWidths = [
53.0,
120.0,
413.0,
150.0,
190.0,
84.0,
714.0,
];
final List<Color> backgroundColors = [
Colors.blueGrey[37], // RGB(37,49,80)
Colors.blueGrey[37],
Colors.blueGrey[37],
Colors.blueGrey[37],
Colors.blueGrey[37],
Colors.blueGrey[37],
Colors.darkGreen, // RGB(58,101,92),
];
@override
Widget build(BuildContext context) {
return Container(
height: 22.0,
width: 1747.0,
decoration: BoxDecoration(
border: Border.all(color: Colors.black, width: 1.0), // 边框样式
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(
columnWidths.length,
(index) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: columnWidths.map((width) => _createCell(width)).toList(),
);
},
),
),
),
);
}
Widget _createCell(double width) {
return Container(
height: 22.0,
width: width,
alignment: Alignment.centerLeft,
padding: EdgeInsets.symmetric(horizontal: 8.0),
decoration: BoxDecoration(
color: backgroundColors[index % backgroundColors.length], // 遍历背景色列表
borderRadius: BorderRadius.circular(2.0), // 圆角
),
);
}
}
// 在主应用中使用这个表头
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Custom Table Header')),
body: SingleChildScrollView(child: CustomTableHeader()),
);
}
}
```
在这个例子中,`CustomTableHeader` 是一个自定义 widget,它根据给定的列宽和颜色数组生成表头。在实际项目中,你可以在适当的视图中使用 `MyApp`。
阅读全文