top of page


21 NOVEMBER, 2026
BANGALORE


( SPEAKER )
Pranav Masekar
Flutter Engineer
Les Amis
Pranav Masekar, an accomplished Flutter developer with over 3 years of experience in creating applications.
Briefing some of my contributions:
- Adept at integrating SDKs (e.g., Smallcase, Moengage) to enhance functionality and user experience.
- Proficient in DevOps practices, including CI/CD with Jenkins, IaC with Terraform, and containerization with Docker.
- Consistently contributing to the community through insightful Blog posts.
Session
Flutter Can't Do That: Shipping AirPlay, HealthKit, and Live Activities
Sooner or later, every Flutter app hits a wall: a native framework with no `pub.dev` package, an abandoned plugin with dozens of unresolved issues, or a feature like a Live Activity in the Dynamic Island, that Flutter simply cannot render.
At that point, you're writing platform code, and most of us do it the worst possible way: a hand-written `MethodChannel` with stringly-typed method names, custom codecs, and no compile-time safety across Dart, Swift, and Kotlin.
This talk is about doing it properly with Pigeon, demonstrated through real integrations I built and documented not `getBatteryLevel()`.
We begin by looking at why the traditional `MethodChannel` approach breaks down and what Pigeon's generated, type-safe interfaces change. From there, we work through four progressively more complex integrations:
AirPlay : Native continuously pushes route and device state back into Flutter. Simple method calls aren't enough; you need event streams that cross the platform boundary cleanly.
HealthKit : Native owns permissions and asynchronous authorisation. The platform boundary now has more states than just success and failure, and your API needs to model them explicitly.
Live Activities : Native owns the UI, rendered by SwiftUI in a separate process. Flutter is no longer the renderer it becomes a data source. This is the integration that fundamentally changes how many developers think about a Flutter application.
Across all of these examples, the underlying pattern is the same and it's the real takeaway from the talk. The complexity of a platform integration isn't determined by the framework you're calling; it's determined by how much responsibility the native platform has taken over. Once you recognise that pattern, you can predict how difficult an integration will be before you write a single line of code.
You'll leave knowing how to replace hand-written platform channels with Pigeon, design type-safe APIs that handle errors and event streams gracefully, and confidently integrate native iOS frameworks even when no Flutter package exists.
bottom of page