SShortSingh.
Back to feed

Flutter app fixes swipe navigation that failed during loading states

0
·3 views

GwinG, a language-exchange messenger built with Flutter, had a bug where horizontal swipes between tabs stopped working while content was still loading. A user reported that swiping on the Search tab during a slow connection did nothing until the user list appeared. The developers found that the app had several distinct loading states, and only some were wrapped in the swipe handler. They added a shared gesture widget that handles drags with distance and velocity thresholds, respects edge gestures and right-to-left layouts, and applies only on mobile. The sign-in loading screen now uses the same gesture wrapper, keeping tab navigation available throughout.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

Stock Row Looked Consistent, Yet the Last Unit Was Sold Twice

A developer describes an oversell bug where a customer support ticket revealed two people were promised the same last unit, even though the stock row showed OnHand 1, Reserved 1, and Available 0. The stock table appeared internally consistent, with no negative values, constraint violations, or logged exceptions. The root cause is a lost update: the code reads a counter and writes an absolute value, so concurrent requests overwrite each other's changes. The reservation records, not the stock counter, reveal the true promised quantity, so comparing the two is the way to detect such errors. The author also shows how a barrier-based test hook can reliably reproduce the race condition in a test run instead of relying on flaky timing.

0
ProgrammingDEV Community ·

DeepSeek V4.1 Flash 1017 outscored its September release on two agentic coding benchmarks

DeepSeek released V4.1 Flash 1017 on October 17, describing it as a minor update, and it kept the same API name and pricing. On two agentic coding benchmarks it beat the September V4.1 Flash release, scoring 0.6957 versus 0.591 on one and a 0.4520 median versus 0.3342 on the other. The two builds of the same app from this model scored 0.2422 and 0.6618, with the lower one stalling on a rate-limit wait loop. The results come from a single task per benchmark in one specific test setup, so they are indicative rather than conclusive. The same report also covered weaker results from NVIDIA's Nemotron 3.5 Super VL and a local Muse Glimmer 30B model, along with corrections to how the test platform recorded costs.

0
ProgrammingDEV Community ·

Flutter tab shell keeps each page alive to avoid redundant work on tab switches

A common problem in Flutter bottom navigation is that replacing a route on every tap reruns initState, repeating network requests, polling and scroll resets even when nothing has changed. The GwinG team fixed this by hosting all four main tabs in a single route and switching the visible child with an IndexedStack instead. Pages are built lazily on first visit, except the Friends tab, which loads at startup because users open it most often. A shared notifier drives every navigation entry point, including taps, swipes, shortcuts and deep links, so the highlight, visible page and saved tab stay in sync. Tab changes use a brief fade, which is disabled for users who prefer reduced motion.

0
ProgrammingDEV Community ·

Six Design Questions to Settle Before Shipping Speech-to-Text in .NET 10

A developer building a voice-notes feature in .NET 10 found that Microsoft.Extensions.AI 10.10 offers a speech-to-text abstraction similar to its chat client interface, simplifying integration. The real effort, they note, lies in design decisions the API leaves open, which they outline as six questions to resolve before production. The article covers the ISpeechToTextClient contract, registration via a builder with logging and telemetry, and the experimental MEAI001 diagnostic that is suppressed deliberately. It contrasts batch transcription with streaming, showing how streamed updates can be sent to a browser as NDJSON, and recommends starting with batch processing. The author also describes enforcing a hard audio size cap through a delegating client, since providers often bill by audio duration.