Why Did I Build This?
"Standard weather applications on Smart TVs are frequently clunky mobile ports that fail to utilize D-Pad navigation correctly and require tedious manual city searching via on-screen keyboards. I engineered this native application to eliminate user friction entirely. By implementing an aggressive IP-based geo-location sequence during the splash phase, the application instantly resolves the user's specific Turkish region and city. This allows the TV to bypass setup screens and immediately display relevant forecast data without requiring a single remote control click."
Architecture & Decisions
Built with Flutter and rigidly locked to landscape orientation for TV displays. The architecture relies on a decoupled, state-driven UI where spatial focus management is handled explicitly for hardware D-Pads via `InkWell.onFocusChange` and implicit `FocusNode` trees. Network pipelines (`http`) are dispatched asynchronously, parsing raw OpenWeatherMap JSON payloads directly into localized UI states. The boot sequence features a strict 4-second timeout-bounded HTTP request to `geo.json` for IP resolution, ensuring the application fails gracefully to a default state (Marmara/Istanbul) rather than locking up the UI if the network drops.
Key Features
- 01.Zero-click onboarding via automated IP-to-Region geographic resolution
- 02.Spatial D-Pad navigation matrix optimized for Android TV remote controls
- 03.Asynchronous integration with the OpenWeatherMap 5-day forecast API
- 04.Graceful network fallback mechanisms with strict asynchronous timeout boundaries
- 05.Hardware-accelerated UI animations (`AnimatedContainer`, `FadePageRoute`) intrinsically tied to hardware focus states