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

Invalid constant value. The values in a const list literal must be constants.

Meu código apresenta esses problemas ao colocar o botão de 'Confirmar' e não consigo avançar...

import 'dart:ffi';

import 'package:flutter/material.dart';

import 'package:flutter/material.dart';

import 'package:flutter/material.dart';

void main() => runApp(BytebankApp());

class BytebankApp extends StatelessWidget {
    @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: FormularioTransferencia(),

      ),
    );
  }
}



class FormularioTransferencia extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Criando Transferência'),
      ),
      body: Column(
        children: const <Widget>[
          Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              style: TextStyle(
                fontSize: 24.0
              ),
              decoration: InputDecoration(
                labelText: 'Numero da conta',
                hintText: '0000'
              ),
              keyboardType: TextInputType.number,
            ),
          ),Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              style: TextStyle(
                fontSize: 24.0
              ),
              decoration: InputDecoration(
                icon: Icon(Icons.monetization_on),
                labelText: 'Valor',
                hintText: '0.00'
              ),
              keyboardType: TextInputType.number,
            ),
          ),
          ElevatedButton(
            child: Text('Confirmar'),
            onPressed: () {
              debugPrint('Clicou confirmar');
            },
          ),
        ],
      ),
    );
  }
}

class ListaTransferencia extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
        appBar: AppBar(
        title: Text('Transferências'),
    ),
      body: Column(
      children: [
        ItemTransferencia()
      ],
    ),
        floatingActionButton: FloatingActionButton(
        onPressed: () {  },
    child: Icon(Icons.add),
    ));
  }

  }

  class ItemTransferencia extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Card(
      child: ListTile(
        leading: Icon(Icons.monetization_on),
        title: Text('100.0'),
        subtitle: Text('1000'),
      ),
    );
  }

  }

tela botão Confirmar

3 respostas

Opa Thiago, blz? Testei o seu código e o problema está na declaração do children: const <Widget>[...], remova esse const e adicione nos Widgets filhos, como é o caso do Padding etc. O motivo disso acontecer é que a keyword const só vai funcionar para Widgets que são constantes, ou seja, não mudam o seu comportamento, no caso dessa lista de Widgets, o ElevatedButton não tem essa característica e por isso apresenta esse problema.

[]s

solução!

Bom dia Thiago! Tudo bom?

Cara seguinte, seu erro ta dizendo que os valores na sua Lista devem ser constantes.

Mas Kako eu não fiz nenhuma lista!

Sabe ali em cima no seu FormulárioTransferencia, no body do seu Scaffold você colocou um Column, certo?

Esse Column precisa de vários filhos (children).

Beleza, agora que você já se localizou da uma olhadinha nesse termo que você colocou:

Column(
        children: const <Widget>[
...
]

esse const que você vê ai é uma definição para o código que diz que esses Widgets serão todos constantes!

Só que o ElevatedButton é um widget variável ( você preciona ele e ele muda algo, então não é um Widget const ).

Se você retirar ele, seu código vai funcionar c:

Aqui vou colocar o código arrumadinho pra vc comparar:

import 'package:flutter/material.dart';

void main() => runApp(BytebankApp());

class BytebankApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: FormularioTransferencia(),

      ),
    );
  }
}



class FormularioTransferencia extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Criando Transferência'),
      ),
      body: Column(
        children: <Widget>[
          const Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              style: TextStyle(
                  fontSize: 24.0
              ),
              decoration: InputDecoration(
                  labelText: 'Numero da conta',
                  hintText: '0000'
              ),
              keyboardType: TextInputType.number,
            ),
          ),
          const Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              style: TextStyle(
                  fontSize: 24.0
              ),
              decoration: InputDecoration(
                  icon: Icon(Icons.monetization_on),
                  labelText: 'Valor',
                  hintText: '0.00'
              ),
              keyboardType: TextInputType.number,
            ),
          ),
          ElevatedButton(
            child:const Text('Confirmar'),
            onPressed: () {
              debugPrint('Clicou confirmar');
            },
          ),
        ],
      ),
    );
  }
}

class ListaTransferencia extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
        appBar: AppBar(
          title: Text('Transferências'),
        ),
        body: Column(
          children: [
            ItemTransferencia()
          ],
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {  },
          child: Icon(Icons.add),
        ));
  }

}

class ItemTransferencia extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Card(
      child: ListTile(
        leading: Icon(Icons.monetization_on),
        title: Text('100.0'),
        subtitle: Text('1000'),
      ),
    );
  }

}

Qualquer coisa só me dar um grito!

Vcs são top!!! Deu certinho. Muito obrigado. Desculpaa suficação xD