我正在尝试创建一个网格,行和单元格基于我的列表,效果很好,但问题是网格很灵活,它包装了其中的数据。
import 'package:flutter/material.dart';
import 'package:mobagent/model/modelmobagent.dart';
class HistoricoMateriais extends StatelessWidget {
List<RlcMatTarefa> materiaisTicket;
HistoricoMateriais({required this.materiaisTicket, Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: EdgeInsets.all(25.0),
child: Column(
children: [
Row(
children: [
iconMaterial(
icon: Icons.add,
label: 'Novo',
function: addMaterial,
),
const SizedBox(width: 20),
iconMaterial(
icon: Icons.edit,
label: 'Editar',
function: editarMaterial,
),
const SizedBox(width: 20),
iconMaterial(
icon: Icons.highlight_remove_rounded,
label: 'Apagar',
function: removerMaterial,
),
],
),
Expanded( // Utilize o widget Expanded para ocupar o espaço disponível
child: SingleChildScrollView( // Adicione um SingleChildScrollView para evitar o erro
scrollDirection: Axis.horizontal,
child: DataTable(
columnSpacing: 20,
columns: buildColumns(),
rows: buildRows(),
),
),
)
],
),
),
);
}
iconMaterial({
required IconData icon,
required String label,
required Function() function,
}) {
return InkWell(
onTap: function,
child: Row(
children: [Icon(icon), SizedBox(width: 10), Text(label)],
),
);
}
addMaterial() {
print("Adicionado");
}
editarMaterial() {
print("Editado");
}
removerMaterial() {
print("Removido");
}
}
class CustomDataTable extends StatelessWidget {
final List<RlcMatTarefa> dados;
CustomDataTable({required this.dados});
@override
Widget build(BuildContext context) {
return DataTable(
columnSpacing: 20,
columns: buildColumns(),
rows: buildRows(),
);
}
List<DataColumn> buildColumns() {
return [
DataColumn(
label: Text('Descrição'),
),
DataColumn(
label: Text('Q'),
),
DataColumn(
label: Text('U'),
),
];
}
List<DataRow> buildRows() {
return dados.map((tarefa) {
return DataRow(
cells: [
DataCell(
Container(
width: 100, // Defina o valor que melhor se adapte à sua tela
child: Text(
tarefa.Descricao!.length > 19 ? '${tarefa.Descricao!.substring(0, 19)}...' : tarefa.Descricao!,
style: TextStyle(fontSize: 12),
overflow: TextOverflow.ellipsis,
),
),
),
DataCell(
Text(
tarefa.Quantidade?.toString() ?? '',
style: TextStyle(fontSize: 12),
),
),
DataCell(
Text(
tarefa.UtilizouMaterial ?? '',
style: TextStyle(fontSize: 12),
),
),
],
);
}).toList();
}
}
在我的屏幕大小受填充限制的情况下获取此网格,如果大于提供的空间,“描述”也会受到限制,并且如果您的灵魂很好,一种按时间选择行的方法,只有一个。