Olá Matheus, tudo bem?
Primeiramente, parabéns por continuar seu aprendizado após o término do curso e por buscar novas formas de persistir os dados localmente em seu projeto pessoal. É muito válido e importante para aprimorar suas habilidades em programação.
Quanto à sua dúvida, é possível utilizar o SQLite para persistir o tema em seu aplicativo. O processo é semelhante ao utilizado com o AsyncStorage, mas com algumas diferenças na implementação.
Para começar, é necessário instalar o pacote SQLite no seu projeto, imagino que essa parte você já tenha, mas para isso, você pode utilizar o seguinte comando no terminal:
npm install --save react-native-sqlite-storage
Após a instalação, você pode criar uma tabela no banco de dados SQLite para armazenar as informações do tema. Por exemplo:
CREATE TABLE theme (
id INTEGER PRIMARY KEY,
isDarkMode INTEGER NOT NULL
);
Em seguida, é possível criar uma função que insere ou atualiza o valor do tema na tabela. Algo semelhante a isso:
import SQLite from 'react-native-sqlite-storage';
// Abre a conexão com o banco de dados
const db = SQLite.openDatabase({name: 'my.db'});
// Função que insere ou atualiza o valor do tema na tabela
const saveTheme = (isDarkMode) => {
db.transaction((tx) => {
// Executa o comando SQL para inserir ou atualizar o valor do tema
tx.executeSql(
'INSERT INTO theme (id, isDarkMode) VALUES (1, ?) ' +
'ON CONFLICT(id) DO UPDATE SET isDarkMode = ?',
[isDarkMode, isDarkMode],
() => { console.log('Tema salvo com sucesso!'); },
(error) => { console.log('Erro ao salvar tema: ', error); }
);
});
};
Nessa função, utilizamos o método executeSql
do objeto tx
para executar um comando SQL que insere ou atualiza o valor do tema na tabela. O parâmetro ON CONFLICT
é utilizado para atualizar o valor do tema caso ele já exista na tabela.
Por fim, você pode criar outra função para recuperar o valor do tema do banco de dados. Algo semelhante a isso:
// Função que recupera o valor do tema do banco de dados
const getTheme = (callback) => {
db.transaction((tx) => {
// Executa o comando SQL para recuperar o valor do tema
tx.executeSql(
'SELECT isDarkMode FROM theme WHERE id = 1',
[],
(_, {rows}) => { callback(rows.item(0).isDarkMode); },
(error) => { console.log('Erro ao recuperar tema: ', error); }
);
});
};
Nessa função, utilizamos o método executeSql
do objeto tx
para executar um comando SQL que recupera o valor do tema na tabela. O parâmetro callback
é uma função que será chamada com o valor do tema recuperado do banco de dados.
Com essas funções, você pode salvar e recuperar o valor do tema no banco de dados SQLite em seu aplicativo. Basta chamar a função saveTheme
para salvar o valor do tema e a função getTheme
para recuperar o valor do tema em qualquer parte do seu código.
Espero ter ajudado! Se tiver alguma dúvida é só falar!