1
resposta

Erro na implementação do ListaTransferencias

Estou recebendo esse erro A value of type 'Future' can't be assigned to a variable of type 'Future'. Try changing the type of the variable, or casting the right-hand type to 'Future' quando crio o future da ListaTransferencias. Estou usando o Flutter 2.0 e já coloquei o "?" em Future<Transferencia?> mas quando faço isso passa a ser exibido o erro The argument type 'Transferencia?' can't be assigned to the parameter type 'Transferencia' no retorno para _transferencias.add(value); Fiquei em um beco sem saída... Se coloco o "?" aparece um erro, se tiro aparece outro.

O código está abaixo: class ListaTransferencias extends StatelessWidget { final List _transferencias = List.empty(growable: true);

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Transferências'), ), body: ListView.builder( itemCount: _transferencias.length, itemBuilder: (context, index) { final transferencia = _transferencias[index]; return ItemTransferencia(transferencia); }, ), floatingActionButton: FloatingActionButton( onPressed: () { final Future<Transferencia?> future = Navigator.push(context, MaterialPageRoute(builder: (context) { return FormularioTransferencia(); })); future.then((value) { debugPrint('Entrou no Future'); debugPrint('$value'); _transferencias.add(value); }); }, child: Icon(Icons.add), ), ); } }

1 resposta

Olá Alexandre, talvez você já conseguiu resolver, mas vou deixar aqui como eu resolvi esse problema.

O erro ocorre porque o valor retornado pelo FormularioTransferencia pode ser nulo, por isso basta adicionar uma condição antes de chamar o método add da lista de transferências.

o código ficou assim:

Future <Transferencia?> future = Navigator.push(
    context,
    MaterialPageroute(
        builder: (context) {
            return FormularioTransferencia();
        },
    ),
);

future.then((value) {
    if (value != null) {
        _transferencias.add(value);
    }
});