system_language 0.3.1
system_language: ^0.3.1 copied to clipboard
Sistema manipulador de linguagem.
SystemLanguage #
Gerenciador de idiomas utilizando o padrão Singleton para armazenar e recuperar textos através de objetos Book.
Versão #
Essa versão é a: 0.3.1
Objetivo #
A classe SystemLanguage centraliza o controle de idiomas da aplicação, permitindo:
- Definir o idioma atual.
- Armazenar livros (
Book) por idioma. - Recuperar textos por índice.
- Adicionar novos textos.
- Registrar novos idiomas dinamicamente.
Estrutura da Classe #
class SystemLanguage {
String lng = 'pt-br';
Map<String, Book> books = <String, Book>{};
static final SystemLanguage _instance = SystemLanguage._();
// construtor privado
SystemLanguage._();
// contrutor
factory SystemLanguage() {
return _instance;
}
// construtor nomeado
SystemLanguage.books(Book book, String language) {
lng = language;
books = {lng: book};
}
// Devolve o texto para o indice.
String out(String index) {
return books[lng]!.out(index);
}
// Inclue texto no mapa como o indice.
bool add({required String index, required String text}) {
return books[lng]!.add(index, text);
}
// Adiciona livro ao mapa
bool addBook(Book book, String language) {
lng = language;
books = {lng: book};
return true;
}
}
Padrão Singleton #
A classe utiliza o padrão Singleton, garantindo apenas uma instância global durante toda a execução da aplicação.
Exemplo #
final language = SystemLanguage();
Todas as chamadas retornarão a mesma instância.
Propriedades #
| Propriedade | Tipo | Descrição |
|---|---|---|
lng |
String |
Idioma atualmente selecionado |
books |
Map<String, Book> |
Mapa contendo os livros por idioma |
_instance |
SystemLanguage |
Instância singleton da classe |
Construtores #
Construtor Privado #
SystemLanguage._();
Impede a criação direta da classe.
Factory Constructor #
factory SystemLanguage()
Retorna a instância singleton da classe.
Construtor Nomeado #
SystemLanguage.books(Book book, String language)
Inicializa o sistema já contendo um livro associado a um idioma.
Exemplo #
final lang = SystemLanguage.books(bookPt, 'pt-br');
Métodos #
out() #
Retorna um texto utilizando o índice informado.
Sintaxe #
String out(String index)
Parâmetros #
| Nome | Tipo | Descrição |
|---|---|---|
index |
String |
Índice do texto desejado |
Exemplo #
String text = language.out('welcome');
add() #
Adiciona temporariamente um novo texto ao idioma atual.
Sintaxe #
bool add({
required String index,
required String text
})
Parâmetros #
| Nome | Tipo | Descrição |
|---|---|---|
index |
String |
Chave identificadora do texto |
text |
String |
Texto que será armazenado |
Exemplo #
language.add(
index: 'hello',
text: 'Olá Mundo'
);
addBook() #
Adiciona um novo livro ao sistema e altera o idioma atual.
Sintaxe #
bool addBook(Book book, String language)
Parâmetros #
| Nome | Tipo | Descrição |
|---|---|---|
book |
Book |
Livro contendo os textos |
language |
String |
Código do idioma |
Exemplo #
language.addBook(bookEn, 'en-us');
Exemplo Completo #
void main() {
Book ptBook = Book();
ptBook.add('hello', 'Olá');
Book enBook = Book();
enBook.add('hello', 'Hello');
final language = SystemLanguage.books(
ptBook,
'pt-br'
);
print(language.out('hello'));
// Olá
language.addBook(enBook, 'en-us');
print(language.out('hello'));
// Hello
}
Estrutura Esperada da Classe Book #
A classe Book deve implementar os métodos abaixo:
class Book {
bool add(String index, String text) {
// implementação
}
String out(String index) {
// implementação
}
}
Observações Importantes #
Troca de Idioma #
O método addBook() altera automaticamente o idioma atual:
lng = language;
Substituição do Mapa #
Ao adicionar um novo livro:
books = {lng: book};
O mapa anterior é substituído completamente.
Exemplo #
Se já existirem outros idiomas registrados, eles serão removidos.
📄 Licença #
A Licença Apache 2.0 é uma licença de software de código aberto permissiva e popular. Ela permite o uso, modificação, distribuição e comercialização do software, inclusive em projetos fechados, desde que mantenha os créditos de autoria, inclua uma cópia da licença e relate as alterações feitas.