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'];