1
resposta

Erro retorno funcao em Dart

Boa tarde,

preciso de um help,

fiz esse programinha para estudo para calcular a area e gostaria de usar uma função, segue o codigo: import 'dart:io'; import 'dart:math'; void main() { /*Dado o tamanho da base e da altura de um retângulo, calcular a sua área e o seu perímetro. */

print("Qual a altura:"); String? altura = stdin.readLineSync(); if (altura != null) { double alt = double.parse(altura); }

print("Qual a base:"); String? base = stdin.readLineSync(); if (base != null) { double bas = double.parse(base); } print("${ funcArea}"); } double funcArea(double alt,double bas){ double resultado = (bas * alt); return resultado; }

digito os valores numa boa ai retorna erro: Closure: (double, double) => void from Function 'funcArea': static.

C:/flutter/Dart/dart-sdk/bin/dart.exe --enable-asserts C:\Users\roque\IdeaProjects\projeto_inicial\bin\projeto_inicial.dart Qual a altura: 10 Qual a base: 10 Closure: (double, double) => void from Function 'funcArea': static.

Process finished with exit code 0

Grato desde já

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Jesus

Parece que você está tentando imprimir a função funcArea em si, em vez de chamar essa função com os argumentos corretos.

Quando você faz print("${ funcArea}");, você está tentando imprimir a representação da função, não o resultado dela. Para corrigir isso, você precisa chamar a função com os argumentos necessários.

Além disso, percebi que você está declarando as variáveis alt e bas dentro de blocos if. Isso faz com que essas variáveis tenham um escopo limitado a esses blocos, ou seja, elas não são acessíveis fora deles.

Aqui está uma versão corrigida do seu código:

import 'dart:io';
import 'dart:math';

void main() {
  print("Qual a altura:");
  String? altura = stdin.readLineSync();
  double alt = 0;
  if (altura != null) {
    alt = double.parse(altura);
  }

  print("Qual a base:");
  String? base = stdin.readLineSync();
  double bas = 0;
  if (base != null) {
    bas = double.parse(base);
  }

  print("${funcArea(alt, bas)}");
}

double funcArea(double alt,double bas){
  double resultado = (bas * alt);
  return resultado;
}

Neste código, eu declarei as variáveis alt e bas fora dos blocos if para que elas possam ser acessadas em todo o main. Além disso, eu chamei a função funcArea com os argumentos alt e bas ao imprimi-la.

Espero ter ajudado e bons estudos!