我快要哭了,请大家帮帮我

问题描述 投票:0回答:0

我正在尝试创建一个网格,行和单元格基于我的列表,效果很好,但问题是网格很灵活,它包装了其中的数据。

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();
  }
}

在我的屏幕大小受填充限制的情况下获取此网格,如果大于提供的空间,“描述”也会受到限制,并且如果您的灵魂很好,一种按时间选择行的方法,只有一个。

flutter grid s
© www.soinside.com 2019 - 2024. All rights reserved.