Não estou conseguindo importar SenderIdInvalidException, estou fazendo igual ao professor e não sei onde está dando error.

Não estou conseguindo importar SenderIdInvalidException, estou fazendo igual ao professor e não sei onde está dando error.

Olá Cleber!
Nesse caso, gostaria de testar o seu código, através da imagem, não observei erro. Para que eu possa fornecer uma resposta mais assertiva. Compartilhe o seu código e o link da aula em que você está, por favor.
Agradeço desde já!
Fico no aguardo e a disposição!
O link da aula... https://cursos.alura.com.br/course/dart-lidando-exceptions-null-safety/task/108741
não sei se estou passando da maneira certa, mas copiei tudo:

código1:
class SenderIdInvalidException implements Exception{
String idSender;
SenderIdInvalidException({required this.idSender});
}
class ReceiverIdInvalidException implements Exception{}
class SenderNotAuthenticatedException implements Exception{}
class SenderBalanceLawerThanAmountException implements Exception{}
código2:
import '../models/account.dart';
import '../exceptions/bank_controller_exceptions.dart';
class BankController {
final Map<String, Account> _database = {};
addAccount({required String id, required Account account}) {
_database[id] = account;
}
bool makeTransfer(
{required String idSender,
required String idReceiver,
required double amount}) {
// Verificar se ID de remetente é válido
if (!verifyId(idSender)) {
throw SenderIdInvalidException(idSender: idSender);
}
// Verificar se ID de destinatário é válido
if (!verifyId(idReceiver)) {
throw ReceiverIdInvalidException();
}
Account accountSender = _database[idSender]!;
Account accountReceiver = _database[idReceiver]!;
// Verificar se o remetente está autenticado
if (!accountSender.isAuthenticated) {
throw SenderIdInvalidException();
}
// Verificar se o remetente possui saldo suficiente
if (accountSender.balance < amount) {
throw SenderBalanceLawerThanAmountException();
}
// Se tudo estiver certo, efetivar transação
accountSender.balance -= amount;
accountReceiver.balance += amount;
return true;
}
bool verifyId(String id) {
return _database.containsKey(id);
}
}
codigo 3:
import 'dart:io';
import 'dart:math';
import 'controllers/bank_controller.dart';
import 'models/account.dart';
void main() {
// Criando o banco
BankController bankController = BankController();
// Adicionando contas
bankController.addAccount(
id: "Ricarth",
account:
Account(name: "Ricarth Lima", balance: 400, isAuthenticated: true));
bankController.addAccount(
id: "Kako",
account:
Account(name: "Caio Couto", balance: 600, isAuthenticated: true));
// Fazendo transferência
try{
bool result = bankController.makeTransfer(
idSender: "Kako222", idReceiver: "Ricarth", amount: 50);
} on Sed
// Observando resultado
print(result);
}
O códigoi 2 ficou confuso, ve se está melhor :
import '../models/account.dart';
import '../exceptions/bank_controller_exceptions.dart';
class BankController {
final Map<String, Account> _database = {};
addAccount({required String id, required Account account}) {
_database[id] = account;
}
bool makeTransfer(
{required String idSender,
required String idReceiver,
required double amount}) {
// Verificar se ID de remetente é válido
if (!verifyId(idSender)) {
throw SenderIdInvalidException(idSender: idSender);
}
// Verificar se ID de destinatário é válido
if (!verifyId(idReceiver)) {
throw ReceiverIdInvalidException();
}
Account accountSender = _database[idSender]!;
Account accountReceiver = _database[idReceiver]!;
// Verificar se o remetente está autenticado
if (!accountSender.isAuthenticated) {
throw SenderIdInvalidException();
}
// Verificar se o remetente possui saldo suficiente
if (accountSender.balance < amount) {
throw SenderBalanceLawerThanAmountException();
}
// Se tudo estiver certo, efetivar transação
accountSender.balance -= amount;
accountReceiver.balance += amount;
return true;
}
bool verifyId(String id) {
return _database.containsKey(id);
}
}
Olá Cleber, tudo bem contigo?
Observei alguns pequenos erros no seu código e acredito que os reparando, vai dar certo.
O erro provavelmente está aqui no arquivo 2 (BankController), na parte onde você verifica se o remetente está autenticado:
if (!accountSender.isAuthenticated) {
throw SenderIdInvalidException();
}
O correto seria:
if (!accountSender.isAuthenticated) {
throw SenderIdInvalidException(idSender: idSender);
}
Isso porque SenderIdInvalidException requer um parâmetro obrigatório idSender, então lançar essa exceção sem um argumento gera erro.
Outro possível erro está no arquivo 3 (main.dart). A instrução try foi iniciada, mas o bloco on está incompleto:
try{
bool result = bankController.makeTransfer(
idSender: "Kako222", idReceiver: "Ricarth", amount: 50);
} on Sed
Aqui parece que você começou a escrever SenderIdInvalidException, mas não concluiu. O correto seria algo assim:
try {
bool result = bankController.makeTransfer(
idSender: "Kako222", idReceiver: "Ricarth", amount: 50);
print(result);
} on SenderIdInvalidException catch (e) {
print("O ID '${e.idSender}' não é um ID válido.");
}
Por favor, verifique esses pontos, em caso de persistência, vou pedir para subir o seu código no GitHub e me enviar o link:
Estou à disposição para seu rápido retorno aos estudos.
Espero ter ajudado! Bons estudos!
Sucesso ✨
Oi, professor. Obrigado por ter respondido, isto resolveu o problema em parte. Eu coloquei o Sen (esqueci de explicar) justamente pq quando coloco o Sen (não chama). Nem se colocar todo o código, como mostro aqui (abaixo no print). De repente é mais simples que subir o código no GitHub:
Ve se o senhor consegue acessar o meu projeto: https://github.com/berquo44/684572
Desculpe a demora, só tive tempo de responde e agradecer a equipe, pois estava em transito, só consegui acessar agora.
Espero que resolva.
Muito obrigado!

Joguei o GitHub par ver se está correto. Mais uma vez obrigado pelo suporte!
Oi, Cleber!
Seu repositório e ele está vazio, então não consigo visualizar os arquivos do seu projeto no GitHub. Uma forma bem simples de enviar seus arquivos é assim:
Acesse o seu repositório no GitHub.
Clique na opção "uploading an existing file", como mostro a seguir:

Depois, arraste todos os arquivos do seu projeto para a área que aparecer.
Em seguida, clique no botão "Commit changes" para finalizar.
Dessa forma, conseguirei ver seu completo completo, testar e te ajudar melhor.
Fico no aguardo!
Acho que agora foi, Professor!
Tomara que esteja certo...
Obrigado!
https://github.com/berquo44/684572

Olá Cleber! Tudo bem?
Obrigado por compartilhar seu código, isso facilita muito na hora de fazer testes.
Quanto ao seu erro ele acontece no arquivo dart_exceptions, no qual ficou faltando a importação do SenderIdInvalidException, para reparar isso basta adicionar a seguinte linha no arquivo:
import 'controllers/bank_controller.dart';
import 'exceptions/bank_controller_exceptions.dart'; //adicione essa linha
import 'models/account.dart';
Por fim, falta um "}", no final do código, ficando assim:
import 'dart:io';
import 'dart:math';
import 'controllers/bank_controller.dart';
import 'exceptions/bank_controller_exceptions.dart'; //adicione essa linha
import 'models/account.dart';
void main() {
// Criando o banco
BankController bankController = BankController();
// Adicionando contas
bankController.addAccount(
id: "Ricarth",
account: Account(name: "Ricarth Lima", balance: 400, isAuthenticated: true),
);
bankController.addAccount(
id: "Kako",
account: Account(name: "Caio Couto", balance: 600, isAuthenticated: true),
);
// Fazendo transferência
try {
bool result = bankController.makeTransfer(
idSender: "Kako222",
idReceiver: "Ricarth",
amount: 50,
);
print(result);
} on SenderIdInvalidException catch (e) {
print("O ID '${e.idSender}' não é um ID válido.");
}
}
Resultado:
Na aula:
Espero ter ajudado!
Abraços e bons estudos!
Professor, primeiramente...Desculpe-me por eu ter somente agora me debruçado sobre a explicação, tive de resolver uns problemas que apareceram de ultimo momento, e só fui ter como pegar a resolução agora.
Muito Obrigado. Resolvi. No final, consegui resolver. Só um detalhe, se puder explicar... a resposta da aula só foi executada perfeitamente, quando eu tirei os : import 'dart:io'; import 'dart:math';
que o próprio programa sugeriu. Quando coloco o código todo igual ao do senhor, continua dando "error". Apenas por causa disto. Eu só consegui resolver, pq o próprio programa sugeriu esta modificação.
este print, que o senhor pode ver, esta rodando, mas sem osimport 'dart:io'; import 'dart:math.
Porquê?
No mais, obrigado. É apenas um detalhe, mas o real problema foi resolvido e com a grata ajuda do senhor. Obrigado.
Oi, Cleber!
Esses imports só são necessários se você estiver usando funcionalidades específicas dessas bibliotecas, como leitura do terminal (stdin.readLineSync()) ou geração de números aleatórios (Random()).
Como o código não usa nada dessas duas bibliotecas, o próprio Dart (ou o editor que você está usando) entende que esses imports são desnecessários e podem causar avisos ou erros.
Então, pode deixar assim mesmo, sem esses imports.
Em resumo, o Dart só está evitando o uso desnecessário de algumas bibliotecas.
Abraços, e bons estudos!
Obrigado!