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

Importação de Package durante criação de objetos

Visual Studio Code e Dart v.2.4.8 . Olá, Desde o comeño do curso, quando criei o projeto dart pelo visual code, ele criou automaticamente um arquivo chamado "alura_bank.dart" com o seguinte código dentro:

import 'package:alura_bank/alura_bank.dart' as alura_bank;

void main(List<String> arguments) {
  print('Hello world: ${alura_bank.calculate()}!');
}

Ignorei e criei um arquivo main.dart visto que é o nome utilizado nas aulas. e também é o nome default do arquivo executado quando a gente dá um F5. Só que agora, a cada vez que eu crio um objeto explicitando o seu tipo "ContaCorrente" ou "Cliente" ele importa dentro do meu main o bendito:

import 'package:alura_bank/cliente.dart';
import 'package:alura_bank/contaCorrente.dart';

E eu recebo um erro importação "ambiguous_import".

Quando apago o import do Timoteo o problema é resolvido.

O que mudou no dart de lá pra cá pra ele fazer esse import automático ?

Muito Obrigado :)

2 respostas
solução!

Olá Walter, tudo bem com você?

Acredito que nesse ponto a questão não é do import automático, mas sim, de como deve ser feito o import de arquivos da pasta lib de acordo com as convenções do Dart, dando uma olhada na documentação vamos ver que:

Usuários podem importar as bibiliotecas presentes em `lib` usando o nome do pacote e a biblioteca, por exemplo:

import 'package:enchilada/enchilada.dart'

Então o que acontece é que quando estamos digitando um Cliente ou ContaCorrente o VSCode vai ver que não importamos cliente como está explicitando a documentação e vai importar novamente

Mas veja que isso se aplica apenas em pastas que estão fora da lib, dentro dela podemos fazer os imports que o Timoteo fez ( os chamados imports relativos), mas quando estamos dentro de bin ou alguma outra, o ideal é seguir a convenção do pacote/lib ao invés de voltar pastas para ir até a pasta lib

O vscode se integra muito bem com o dart, então ele segue algumas regrinhas do chamado Effective Dartentão provavelmente quando você fez algo como:

import '../lib/clientes.dart'

Vai ver um traçado em azul e ao passar o mouse você vai ver:

Avoid relative imports for files in lib/

Ou seja, devemos evitar fazer os imports relativos de nossos arquivos presente em lib :)

Conseguiu Compreender? Qualquer coisa estou a disposição!

Abraços e Bons Estudos :)

AAAH, saquei. Muito obrigado.

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