Notificações Locais
Lembretes agendados pelo próprio usuário no device, sem servidor.
Notificação local é um lembrete que o usuário programa no próprio device, sem passar por servidor, sem FCM. Exemplo: "me lembre de beber água às 9h todo dia".
Funciona apenas no nativo (iOS e Android). Na web não está disponível.
Implementação
Pelo MCP: peça ao assistente "adiciona local_reminders no meu projeto". Ele roda add_feature por você. Veja MCP do Kasy.
-
Rode:
kasy add local_reminders -
Pronto. A tela de configuração, o estado persistido e as traduções já vêm prontos (veja o que vem incluso em Informações).
-
Para trocar o texto do lembrete (e da notificação demo de Home → Recursos), sem editar arquivo de i18n na mão:
kasy notifications textPelo MCP: peça "muda o texto do lembrete pra X" e o assistente roda
set_notification_textspor você. Veja MCP do Kasy.
Informações
Os quatro textos e onde eles aparecem
| Texto | Onde aparece |
|---|---|
| Demo, título | Card em Home → Recursos e título da notificação instantânea de teste |
| Demo, descrição | Subtítulo do card e corpo da notificação de teste |
| Lembrete, título | Título da notificação agendada (Configurações → Lembretes) |
| Lembrete, corpo | Corpo da notificação agendada |
Horário, dia e frequência continuam sendo escolha do usuário final na tela de Lembretes. Pela CLI você define só a mensagem.
Para pular os prompts, passe tudo por flag:
kasy notifications text \
--demo-title "Teste de notificação local" \
--demo-body "Alerta só neste aparelho." \
--reminder-title "Lembrete" \
--reminder-body "Está na hora de beber água."| Opção | Descrição |
|---|---|
--locale pt|en|es|all | Quais arquivos i18n atualizar (padrão all, mesmo texto nos três) |
--demo-title | Título da demo em Home → Recursos |
--demo-body | Descrição e corpo da demo |
--reminder-title | Título do lembrete agendado |
--reminder-body | Corpo do lembrete agendado |
Use --locale uma vez por idioma quando o app for multilíngue de verdade:
kasy notifications text --locale pt --reminder-title "Lembrete" --reminder-body "Está na hora de beber água."
kasy notifications text --locale en --reminder-title "Reminder" --reminder-body "Time to drink some water."O --locale é separado do -l/--lang da CLI, que muda só o idioma dos prompts do terminal. O comando atualiza lib/i18n/{pt,en,es}.i18n.json e roda dart run slang no fim. Se preferir editar na mão, as chaves são home.cards.notification_title, home.cards.notification_description e dailyReminder.title / dailyReminder.body.
Em que idioma o lembrete chega
O app não escolhe o texto por tipo de notificação: ele usa o idioma ativo do app. Se o usuário escolheu um idioma em Configurações, vale o escolhido; senão vale o idioma do aparelho ou do navegador; e se não for pt, en ou es, cai no idioma base do slang.yaml. O lembrete agendado guarda título e corpo no idioma que estava ativo na hora em que o usuário salvou.
O que vem pronto
- Tela de configuração (
ReminderPage) acessível no onboarding e nas configurações- Toggle ativar/desativar
- Tipo: Diário, Semanal ou Data específica
- Picker de hora e minuto
- Para semanal: seletor de dia da semana
- Para data específica: DatePicker + TimePicker
- Estado persistido em
SharedPreferencesviaReminderNotifier - Traduções em PT, EN e ES
Métodos disponíveis
Em LocalNotifier:
| Método | Uso |
|---|---|
scheduleDailyAt(hour, minute) | Todo dia no mesmo horário |
scheduleWeekly(dayOfWeek, hour, minute) | Todo dia da semana no mesmo horário |
scheduleAt(date) | Data e hora exata (uso único) |
cancel(notificationId) | Cancelar por ID |
cancelAll() | Cancelar todos |
listPendingNotifications() | Ver agendamentos pendentes |
Diferença de Push
| Notificação Push | Notificação Local | |
|---|---|---|
| Quem dispara | Servidor | Próprio device |
| Precisa de internet | Sim | Não |
| Funciona com app fechado | Sim | Sim |
| Personalizado por usuário | Não (exceto deep link) | Sim (o usuário escolhe hora) |
| Web | Não | Não |
Atualizado em 03/11/2026

