Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao mostrar mensagem de lista comprado = vazia

Pessoal,

estou tentando colocar uma mensagem nos produtos do listin, quando não houver nenhum produto comprado

            Column(
              children: List.generate(listaProdutosPegos.length, (index) {
                Produto produto = listaProdutosPegos[index];
                return ListTileProduto(
                  listinId: widget.listin.id,
                  produto: produto,
                  isComprado: true,
                  showModal: showFormModal,
                  iconClick: produtoService.alternarComprado,
                  trailClick: removerProduto,
                );
              }),

Modifiquei o código para :

Column(
              children: (listaProdutosPegos.isEmpty) 
                ? const Center(
                      child: Text(
                        'Nenhuma produto comprado.\nClique no ícone para adicionar?',
                        textAlign: TextAlign.center,
                        style: TextStyle(
                          fontSize: 18,
                        ),
                      ),
                    )
             : List.generate(listaProdutosPegos.length, (index) {
                Produto produto = listaProdutosPegos[index];
                return ListTileProduto(
                  listinId: widget.listin.id,
                  produto: produto,
                  isComprado: true,
                  showModal: showFormModal,
                  iconClick: produtoService.alternarComprado,
                  trailClick: removerProduto,
                );
              }),

Mas após a interrogação fica tudo marcado em vermelhor, o que estou fazendo de errado?

2 respostas
solução!

Oi Celso, tudo be,?

Pelo que entendi, você está tentando exibir uma mensagem quando a lista de produtos comprados estiver vazia. No entanto, ao adicionar a condição para verificar se a lista está vazia, o código fica marcado em vermelho. Vou tentar te ajudar!

Pelo trecho de código que você compartilhou, parece que você está utilizando um operador ternário para verificar se a lista listaProdutosPegos está vazia. No entanto, o problema é que você está tentando retornar um Center como um elemento de uma Column, o que não é permitido.

Uma solução para esse problema seria envolver o Center em um Container e definir uma altura para ele. Por exemplo:

Column(
  children: (listaProdutosPegos.isEmpty) 
    ? [
        Container(
          height: 200, // Defina a altura desejada
          child: Center(
            child: Text(
              'Nenhum produto comprado.\nClique no ícone para adicionar?',
              textAlign: TextAlign.center,
              style: TextStyle(
                fontSize: 18,
              ),
            ),
          ),
        ),
      ]
    : List.generate(listaProdutosPegos.length, (index) {
        Produto produto = listaProdutosPegos[index];
        return ListTileProduto(
          listinId: widget.listin.id,
          produto: produto,
          isComprado: true,
          showModal: showFormModal,
          iconClick: produtoService.alternarComprado,
          trailClick: removerProduto,
        );
      }),
)

Dessa forma, o Container com a mensagem será tratado como um elemento válido dentro da Column.

Espero ter ajudado!

Um abraço e bons estudos.

Lorena, obrigado pela resposta, funcionou..

No meu caso funcionou, mas só precisei usar os [], que não sabia que era necessário.