Files
superport/lib/screens/license/widgets/license_table.dart
2025-07-02 17:45:44 +09:00

72 lines
2.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:superport/models/license_model.dart';
import 'package:superport/screens/common/theme_tailwind.dart';
// 라이센스 목록 테이블 위젯 (SRP, 재사용성)
class LicenseTable extends StatelessWidget {
final List<License> licenses;
final String Function(int companyId) getCompanyName;
final void Function(int id) onEdit;
final void Function(int id) onDelete;
const LicenseTable({
super.key,
required this.licenses,
required this.getCompanyName,
required this.onEdit,
required this.onDelete,
});
@override
Widget build(BuildContext context) {
return DataTable(
columns: const [
DataColumn(label: Text('번호')),
DataColumn(label: Text('유지보수명')),
DataColumn(label: Text('기간')),
DataColumn(label: Text('방문주기')),
DataColumn(label: Text('점검형태')),
DataColumn(label: Text('관리')),
],
rows:
licenses.map((license) {
// name에서 기간, 방문주기, 점검형태 파싱 (예: '12개월,격월,방문')
final parts = license.name.split(',');
final period = parts.isNotEmpty ? parts[0] : '-';
final visit = parts.length > 1 ? parts[1] : '-';
final inspection = parts.length > 2 ? parts[2] : '-';
return DataRow(
cells: [
DataCell(Text('${license.id}')),
DataCell(Text(license.name)),
DataCell(Text(period)),
DataCell(Text(visit)),
DataCell(Text(inspection)),
DataCell(
Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
icon: const Icon(
Icons.edit,
color: AppThemeTailwind.primary,
),
onPressed: () => onEdit(license.id!),
),
IconButton(
icon: const Icon(
Icons.delete,
color: AppThemeTailwind.danger,
),
onPressed: () => onDelete(license.id!),
),
],
),
),
],
);
}).toList(),
);
}
}