惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
D
Docker
J
Java Code Geeks
腾讯CDC
Blog — PlanetScale
Blog — PlanetScale
G
Google Developers Blog
M
MIT News - Artificial intelligence
L
LangChain Blog
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
博客园 - Franky
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
N
Netflix TechBlog - Medium
B
Blog RSS Feed
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
How I built real-time Flutter notifications without Firebase
Hamid Wakili · 2026-05-16 · via DEV Community

I maintain another_flushbar on pub.dev — one of the more popular Flutter notification packages. After seeing how many developers were pulling in the full Firebase SDK just to show an in-app banner, I decided to build something simpler.

The result is FlushKit: a remote in-app notification SDK for Flutter, powered by Server-Sent Events.

The problem with Firebase for in-app notifications

Firebase Cloud Messaging is excellent for push notifications when your app is closed. But if your app is open and you just want to show an announcement, an alert, or an onboarding tip — you're still carrying google-services.json, Firebase Auth dependencies, and a background service to do it.

That felt like too much for the in-app case.

Why SSE instead of WebSockets

SSE (Server-Sent Events) is a persistent HTTP connection where the server pushes events to the client. One direction only — which is exactly what notifications need. No handshake overhead, no socket management, automatic reconnection built into the browser/HTTP spec.

For Flutter, I built a persistent SSE client that reconnects on drop and replays missed notifications via a ?since= query parameter. If a user had the app closed, they get the notification on next open.

What the integration looks like

// Initialize once in your app
FlushbarRemote.init(apiKey: 'fk_live_••••••••', context: context);

Enter fullscreen mode Exit fullscreen mode


`

That's it. From that point, any notification you create in the FlushKit dashboard streams to every connected instance of your app in real time.

The SDK handles reconnection, offline replay, action buttons, icons, and persistent mode — all built on another_flushbar under the hood.

The backend

Go/Gin with a SSE broadcast layer per app. Each connected Flutter instance holds an open HTTP connection. When you publish a notification, it fans out to all active connections immediately.

The same SSE channel will carry Remote Config events next — one persistent connection, multiple message types.

Where it is today

FlushKit is live at flushkit.dev with a free tier. Early stage — I'm the solo founder. Feedback on the use case, the API design, or the pricing is genuinely welcome.

If you're already using another_flushbar, FlushKit is the hosted layer on top of it.


FlushKit is built on another_flushbar,
which I also maintain. Free tier available at flushkit.dev.