3
respostas

Unhandled Exception: type 'Null' is not a subtype of type 'int'

Olá pessoal. Pode ser um problema apenas com meu código. Mas depois da refatoração, estava recebendo uma mensagem de erro sempre que tentava adicionar uma nova transação.

E/flutter ( 7450): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: type 'Null' is not a subtype of type 'int'
E/flutter ( 7450): #0      new Contact.fromJson (package:bytebank_web_api/models/contact.dart:13:12)
E/flutter ( 7450): #1      new Transaction.fromJson (package:bytebank_web_api/models/transaction.dart:14:27)
E/flutter ( 7450): #2      TransactionWebClient.save (package:bytebank_web_api/http/webclients/transaction_webclient.dart:30:24)
E/flutter ( 7450): <asynchronous suspension>

Depois de um pouco de debug, concluí que meu método Contact.fromJson não conseguia converter a resposta do servidor que vinha sem o id.

Achei uma possível solução, mas queria saber se é o recomendavel nesse caso. Usei o operador ?? para atribuir 0 quando o id for null.

Antes:

  Contact.fromJson(Map<String, dynamic> json)
      : id = json['id'],
        name = json['name'],
        accountNumber = json['accountNumber'];

Depois:

  Contact.fromJson(Map<String, dynamic> json)
      : id = json['id'] ?? 0,
        name = json['name'],
        accountNumber = json['accountNumber'];
3 respostas

Olá, bom dia Fabio.

A maneira como você implementou o operador, é recomendável sim. Parabens.

Qualquer dúvida, estamos a disposição.

Eu estava com o mesmo problema e solucionou dessa forma, obrigado.

Boa noite!!

Estava com o mesmo problema. Obrigada por compartilhar a sua solução. Serviu para mim também! :)