Pergunta

Provavelmente estou complicando isso.Mas tenho uma biblioteca que estou fazendo.Terá 2 partes, a externa “qualquer um pode brincar com essas” coisas e a interna.É minha intenção que as coisas internas permaneçam relativamente expostas para tentar manter a interface limpa e fácil de raciocinar.Então aqui está o que estou fazendo (diga-me se isso é loucura ou não).

Para coisas externas, tenho a biblioteca, e depois tudo que deveria ser exposto como “parte” dessa biblioteca.Para as coisas internas, tenho uma biblioteca "my_library_internal" separada que possui todas as suas classes como parte da classe da biblioteca interna.

Onde as coisas ficam estranhas.A biblioteca interna importa a biblioteca externa para todos os métodos da biblioteca interna para usar objetos da biblioteca externa.Isso eventualmente resulta em avisos do compilador (embora pareça compilar perfeitamente).

Essa é a maneira idiomática de fazer isso ou devo apenas tornar tudo o que trata dessa biblioteca, interna ou externa, parte dela e não me preocupar em expor demais as entranhas.

Foi útil?

Solução

Como está escrito no Conceitos importantes página da documentação do Dart, a forma como funciona é esta:

  • Ao contrário do Java, o Dart não possui palavras-chave public, protected, e private.Se um identificador começar com um sublinhado (_), ele será privado de sua biblioteca.Para obter detalhes, consulte a seção chamada “Bibliotecas e Visibilidade”.

Portanto, coloque seus tipos internos na mesma biblioteca que os tipos públicos e prefixe-os com um sublinhado _.

Outras dicas

Isso parece perfeitamente bem, e não deve nem precisar causar advertências.

Se você tiver apenas uma biblioteca, poderá usar membros privados da biblioteca e colocá-los todos na mesma biblioteca (var _private = foo;), mas se você tiver mais de uma biblioteca exposta que compartilham a funcionalidade "privada", tendo um "oculto" compartilhadoA biblioteca é a maneira mais simples de fazê-lo.

Você não pode realmente esconder a biblioteca escondida compartilhada - se alguém quiser importá-lo, eles podem, mas, provavelmente, eles provavelmente podem fazer muito mais dano usando DART: espelhos, se é isso quequer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top