KasyKasy

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.

  1. Rode:

    kasy add local_reminders
  2. 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).

  3. Para trocar o texto do lembrete (e da notificação demo de Home → Recursos), sem editar arquivo de i18n na mão:

    kasy notifications text

    Pelo MCP: peça "muda o texto do lembrete pra X" e o assistente roda set_notification_texts por você. Veja MCP do Kasy.

Informações

Os quatro textos e onde eles aparecem

TextoOnde aparece
Demo, títuloCard em Home → Recursos e título da notificação instantânea de teste
Demo, descriçãoSubtítulo do card e corpo da notificação de teste
Lembrete, títuloTítulo da notificação agendada (Configurações → Lembretes)
Lembrete, corpoCorpo 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çãoDescrição
--locale pt|en|es|allQuais arquivos i18n atualizar (padrão all, mesmo texto nos três)
--demo-titleTítulo da demo em Home → Recursos
--demo-bodyDescrição e corpo da demo
--reminder-titleTítulo do lembrete agendado
--reminder-bodyCorpo 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 SharedPreferences via ReminderNotifier
  • Traduções em PT, EN e ES

Métodos disponíveis

Em LocalNotifier:

MétodoUso
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 PushNotificação Local
Quem disparaServidorPróprio device
Precisa de internetSimNão
Funciona com app fechadoSimSim
Personalizado por usuárioNão (exceto deep link)Sim (o usuário escolhe hora)
WebNãoNão

Atualizado em 03/11/2026