3
respostas

Null check operator used on a null value

Boa noite! Quando tento clicar em "Transfer" sem digitar nenhum valor em "Value" apresenta o seguinte erro na console:

Null check operator used on a null value

E indica que o erro está no seguinte widget (Transaction(value!, widget.contact):

 Padding(
                padding: const EdgeInsets.only(top: 16.0),
                child: SizedBox(
                  width: double.maxFinite,
                  child: ElevatedButton(
                    child: Text('Transfer'),
                    onPressed: () {
                      final double? value =
                          double.tryParse(_valueController.text);
                      final transactionCreated =
                          Transaction(value!, widget.contact);
                      showDialog(
                          context: context,
                          builder: (contextDialog) {
                            return TransactionAuthDialog(
                              onConfirm: (String password) {
                                _save(transactionCreated, password, context);
                              },
                            );
                          });
                    },
                  ),
                ),
              )
            ],
          ),
        ),
      ),
    );
  }

Conseguem me ajudar?

3 respostas

Bom dia, Natalie.. Tudo bom?

Então, aonde você está colocando o !*, tente alterar para um *?. (Transaction(value?, widget.contact)

Também achei algo relacionado ao seu problema nesse link aqui.

Se ainda persistir o erro, veremos outra maneira de te ajudar.

Olá, tudo bem aí?

Bom, ele não aceita ? também. Eu tinha visto esse problema no stackoverflow, mas não sei se seria a melhor forma para essa aplicação. Fiz o seguinte: final double value = double.tryParse(_valueController.text) ?? 0; Em vez de dar erro do Null check operator, ele vai deixar como valor padrão esse 0, permitindo fazer a transferencia e colocando lá na lista o valor 0.0. Tentei tbm colocar uma condição se o value for diferente de null, mas nesse caso ele não faz mais nada. Clico em transfer e nem abre pra colocar a senha.

Acho que adicionando esse ?? 0 é mais interessante, mas também não acho que faça sentido ter uma transferência com o valor de 0.0.

Acho que o erro está em outra parte do código, pois esse seu copiei e colei no meu projeto e funcionou normalmente, manda o TransactionForm inteiro.