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

Erro null safety!

Tenho uma duvida, mesmo digitando um texto, numero ou mesmo apertando "enter" não consigo entrar no "else" da linha 14 e imprimir a msg no console, implementei algo errado ?

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

2 respostas
solução!

Olá, Augusto, tudo bem com você?

O problema está na forma como você está verificando se a entrada é nula ou não. No Dart, stdin.readLineSync() retorna null apenas se houver um erro de entrada/saída ou se a entrada for fechada. Caso contrário, ele retorna uma string vazia se o usuário pressionar apenas Enter.

Já para com a situação em que o usuário digita uma letra, você pode usar a função double.tryParse() para tentar converter a entrada em um número de ponto flutuante. Se a conversão for bem-sucedida, isso significa que o usuário digitou um número. Se não for bem-sucedida, isso significa que o usuário digitou uma letra ou algum outro caractere que não pode ser convertido em um número.

Código com as modificações:

import 'dart:io';

void main() {
  String nome = 'Laranja';
  double peso = 1.06;
  int diasDesdeColheita = 30;
  int diasParaMadura = 20;
  bool isMadura = true;

  print("Insira um número");
  String? input = stdin.readLineSync();

  if (input != null && input.isNotEmpty) {
    double? numero = double.tryParse(input);
    if (numero != null) {
      print(
          "A $nome pesa $peso! Ela foi colhida há $diasDesdeColheita dias e precisa de, em média, $diasParaMadura dias para amadurecer, logo, a $nome ${isMadura ? 'está' : 'não está'} madura!");
    } else {
      print("Erro: Você digitou uma letra em vez de um número.\n");
    }
  } else {
    print("Erro: Entrada vazia.\n");
  }
}

Resultado:

Imagem que mostra a validação dos erros e a impressão do resulado quando é um número

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muito obrigado, revi a aula sobre funções e entendi melhor.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software