Flutter
40 things tagged Flutter.
Fix self-comparison and assert typos in TestSemantics
flutter/flutter · #191938
This replaces #185975, which the stale bot auto-closed on Jul 1. The requested tests had been pushed on May 21 (commit "Add semantics tester regression tests"), but the waiting for response label was never cleared, so the timer kept running. #185975 could not be reopened, hence this PR. @chunhtai you'd reviewed #185975 and said it lgtm pending a test. That test is here — three regression tests, o…
- open
- status
- +134/−4
- diff
- 179K
- repo stars
Remove semantics_tester import from material_button_test.dart
flutter/flutter · #184807
Part of #182636 Summary Remove the semantics_tester.dart cross-import from material_button_test.dart. What changed Replaced the deprecated SemanticsTester/TestSemantics assertions in the MaterialButton semantics test with tester.getSemantics(...) and matchesSemantics(...) Kept the semantic size verification for the enabled and disabled button states Removed the ../widgets/semantics_tester.dart im…
- merged
- status
- +32/−50
- diff
- 179K
- repo stars
Remove semantics_tester import from cupertino/slider_test.dart
flutter/flutter · #184805
Part of #182636 Summary Remove the semantics_tester.dart cross-import from cupertino/slider_test.dart. What changed Replaced the deprecated SemanticsTester/TestSemantics assertion in the slider semantics test with tester.getSemantics(...) and matchesSemantics(...) Removed the ../widgets/semantics_tester.dart import Testing ../../bin/flutter analyze test/cupertino/slider_test.dart ../../bin/flutte…
- merged
- status
- +12/−33
- diff
- 179K
- repo stars
Add EditableText.unfocusedSelectionColor for view-unfocus styling
flutter/flutter · #185976
Part of #103446. Summary On macOS / Linux / Windows / the web, native text fields desaturate their selection highlight to a neutral grey when their window loses focus. Flutter currently keeps the selection painted in the focused color regardless of FlutterView focus state. This PR adds the framework primitive needed to fix that: a new EditableText.unfocusedSelectionColor property the WidgetsBindi…
- closed
- status
- +314/−118
- diff
- 179K
- repo stars
Fix self-comparison and assert typos in TestSemantics
flutter/flutter · #185975
Fixes #185900 Summary Three small bugs in packages/flutter/test/widgets/semantics_tester.dart where the code accidentally compared a value to itself or shifted part of a logical expression into an assert message. What changed 1. controlsNodes self-comparison (line 511). The guard controlsNodes != controlsNodes is always false, so the setEquals(...) mismatch path was unreachable. Replaced with con…
- closed
- status
- +106/−4
- diff
- 179K
- repo stars
Remove semantics_tester import from animated_icons_test.dart
flutter/flutter · #185974
Part of #182636 Summary Remove the semantics_tester.dart cross-import from animated_icons_test.dart. What changed Replaced SemanticsTester(tester) with tester.ensureSemantics() in the Semantic label test (the only site using this import) Replaced expect(semantics, includesNodeWith(label: 'a label')) with expect(find.bySemanticsLabel('a label'), findsOneWidget) Removed the ../widgets/semantics_tes…
- closed
- status
- +1/−6
- diff
- 179K
- repo stars
Remove semantics_tester import from autocomplete_test.dart
flutter/flutter · #185973
Part of #182636 Summary Remove the semantics_tester.dart cross-import from autocomplete_test.dart. What changed Replaced SemanticsTester(tester) with tester.ensureSemantics() in the Autocomplete suggestions are hit-tested before ListTiles test (the only site using this import); the test only enables/disposes semantics and does not assert on the semantics tree Removed the ../widgets/semantics_test…
- closed
- status
- +29/−29
- diff
- 179K
- repo stars
Remove semantics_tester import from range_slider_test.dart
flutter/flutter · #185972
Part of #182636 Summary Remove the semantics_tester.dart cross-import from range_slider_test.dart. What changed Replaced SemanticsTester(tester) with tester.ensureSemantics() in the Semantic nodes do not throw an error after clearSemantics regression test (the only site using this import); the test only enables/disposes semantics and does not assert on the semantics tree Removed the ../widgets/se…
- closed
- status
- +4/−6
- diff
- 179K
- repo stars
Remove semantics_tester import from filled_button_test.dart
flutter/flutter · #185965
Part of #182636 Summary Remove the semantics_tester.dart cross-import from filled_button_test.dart. What changed Replaced the deprecated SemanticsTester/TestSemantics assertion in the Does FilledButton contribute semantics test with tester.getSemantics(...) and matchesSemantics(...) Removed the ../widgets/semantics_tester.dart import Testing ../../bin/flutter analyze test/material/filled_button_t…
- closed
- status
- +34/−47
- diff
- 179K
- repo stars
Remove semantics_tester import from outlined_button_test.dart
flutter/flutter · #185964
Part of #182636 Summary Remove the semantics_tester.dart cross-import from outlined_button_test.dart. What changed Replaced the deprecated SemanticsTester/TestSemantics assertion in the OutlinedButton contributes semantics test with tester.getSemantics(...) and matchesSemantics(...) Removed the ../widgets/semantics_tester.dart import Testing ../../bin/flutter analyze test/material/outlined_button…
- closed
- status
- +53/−64
- diff
- 179K
- repo stars
Remove semantics_tester import from text_button_test.dart
flutter/flutter · #185963
Part of #182636 Summary Remove the semantics_tester.dart cross-import from text_button_test.dart. What changed Replaced the deprecated SemanticsTester/TestSemantics assertion in the Does TextButton contribute semantics test with tester.getSemantics(...) and matchesSemantics(...) Removed the ../widgets/semantics_tester.dart import Testing ../../bin/flutter analyze test/material/text_button_test.da…
- closed
- status
- +24/−25
- diff
- 179K
- repo stars
Remove semantics_tester import from raw_material_button_test.dart
flutter/flutter · #184806
Part of #182636 Summary Remove the semantics_tester.dart cross-import from raw_material_button_test.dart. What changed Replaced the deprecated SemanticsTester/TestSemantics assertion in the padded tap target semantics test with tester.getSemantics(...) and matchesSemantics(...) Removed the ../widgets/semantics_tester.dart import Testing ../../bin/flutter analyze test/material/raw_material_button_…
- merged
- status
- +13/−24
- diff
- 179K
- repo stars
Remove semantics_tester import from user_accounts_drawer_header_test.dart
flutter/flutter · #184809
Part of #182636 Summary Remove the semantics_tester.dart cross-import from user_accounts_drawer_header_test.dart. What changed Replaced the deprecated SemanticsTester/TestSemantics assertions with tester.semantics.find(...), find.semantics.ancestor(...), and matchesSemantics(...) Kept coverage for the merged header semantics, scoped route semantics, alternative account semantics, and the missing-…
- merged
- status
- +44/−75
- diff
- 179K
- repo stars
Remove semantics_tester cross-imports from material tests
flutter/flutter · #185736
Remove cross-directory test imports of semantics_tester.dart from material tests. Duplicates packages/flutter/test/widgets/semantics_tester.dart verbatim into packages/flutter/test/material/, and rewires the four importing tests (card_test.dart, elevated_button_test.dart, material_button_test.dart, data_table_test.dart) to use the local copy. This follows the duplication pattern used in the merge…
- closed
- status
- +2/−2
- diff
- 179K
- repo stars
Remove semantics_tester import from card_test.dart
flutter/flutter · #184808
Part of #182636 Summary Remove the semantics_tester.dart cross-import from card_test.dart. What changed Replaced the deprecated SemanticsTester/TestSemantics assertions in the Card semantics tests with direct semantics lookups and matchesSemantics(...) Kept the existing coverage for separate child semantics and merged semantic container behavior Removed the ../widgets/semantics_tester.dart import…
- closed
- status
- +20/−46
- diff
- 179K
- repo stars
Remove feedback_tester cross-import from calendar_date_picker_test
flutter/flutter · #184802
Part of #182636 Summary Remove the feedback_tester.dart cross-import from calendar_date_picker_test.dart. What changed Inlined a private feedback tester helper into calendar_date_picker_test.dart Removed the ../widgets/feedback_tester.dart import Testing ../../bin/flutter analyze test/material/calendar_date_picker_test.dart ../../bin/flutter test test/material/calendar_date_picker_test.dart
- closed
- status
- +47/−3
- diff
- 179K
- repo stars
auto_theme
pub.dev · thesanaullah.dev
Automatically generate the opposite Flutter theme from the one you already designed.
- 1
- likes
- 150/160
- pub points
- 35/mo
- downloads
- 0.1.1
- version
Remove feedback_tester cross-import from checkbox_list_tile_test
flutter/flutter · #184651
Part of #182636 Summary Remove the feedback_tester.dart cross-import from checkbox_list_tile_test.dart. What changed Inlined the small feedback tester helper into checkbox_list_tile_test.dart Removed the ../widgets/feedback_tester.dart import Testing ../../bin/flutter analyze test/material/checkbox_list_tile_test.dart ../../bin/flutter test test/material/checkbox_list_tile_test.dart
- closed
- status
- +39/−3
- diff
- 179K
- repo stars
Remove sliver_test_utils cross-import from sliver_app_bar_test
flutter/flutter · #184193
Part of #182636 Summary Remove the cross-import of sliver_test_utils.dart from sliver_app_bar_test.dart. What changed Inlined the small verifySliverGeometry helper into sliver_app_bar_test.dart Removed the ../widgets/sliver_test_utils.dart import Testing ../../bin/flutter analyze test/material/sliver_app_bar_test.dart ../../bin/flutter test test/material/sliver_app_bar_test.dart
- merged
- status
- +21/−11
- diff
- 179K
- repo stars
Disable web hot reload when running with --no-hot
flutter/flutter · #184192
Fixes #179448 Summary Disable web hot reload when flutter run is invoked with --no-hot. What changed Make --no-hot disable web hot reload in the computed BuildInfo. Add a run-command regression test covering the flag propagation. Add a resident web runner regression test covering the web-server restart behavior. Testing flutter test test/commands.shard/hermetic/run_test.dart --plain-name "--no-ho…
- closed
- status
- +88/−2
- diff
- 179K
- repo stars
Preserve multiple Set-Cookie headers in web proxy
flutter/flutter · #184189
Fixes #178582 Summary Preserve multiple Set-Cookie headers when proxying web responses. What changed Split merged Set-Cookie header values back into separate headers before returning the proxied response. Added an end-to-end regression test that verifies a client receives both cookies through the proxy. Testing dart analyze packages/flutter_tools/lib/src/isolated/proxy_middleware.dart packages/fl…
- closed
- status
- +70/−2
- diff
- 179K
- repo stars
Expense Tracker
Sanaullah49/expense_tracker
A comprehensive, feature-rich expense tracking application built with Flutter. Manage your finances with multiple accounts, budgets, detailed analytics, and complete data security.
- 8
- stars
- 2
- forks
- Dart
- language
Writing

What Shipping Many Flutter Apps Taught Me About On-Device Work, Honest Offline, and Thin Clients
Flutter is how I ship. The interesting part isn’t widgets — it’s the product bets that keep repeating: on-device compute, honest fallbacks, and thin clients for heavy backends.
Aug 2026 · 4 min read

Building Bloom: Cycle-to-Pregnancy Tracking With Rule-Based Insights, Not Diagnostic AI
I shipped Bloom — one app for cycle, conceive, pregnancy, and postpartum. The hard part was insights that feel personal without pretending to be a clinician.
Aug 2026 · 3 min read

Building Mama Haven: Care Logs, On-Device Sleep Audio, and a Streaming AI Companion
I shipped Mama Haven — track the daily chaos of early parenthood, keep sleep audio on the phone, and chat with NURA without putting API keys in the app. The hard part was logs that stay readable after you change language.
Aug 2026 · 4 min read

Building Aura Pilates: A Mat Workout Studio With a Player That Respects the Session
I shipped Aura Pilates — calm-strength mat training with journeys and a real in-session player. The hard part was product completeness: states, progress that actually resets, and art that can be replaced without rewriting the app.
Aug 2026 · 3 min read

Building KegalFlow: Privacy-First Wellness Training With Explainable Adaptive Pacing
I shipped KegalFlow — guided pelvic-floor training that stays private. The hard part wasn’t the timer. It was adaptive pacing that can explain every change, and never pretends to be medicine.
Aug 2026 · 3 min read
.webp&w=3840&q=75)
Building Website Builder: A Mobile Ops Client for Template-to-Deploy Sites
I shipped Website Builder as a phone client for Buildly. After App Builder’s APK pipeline, this is the web twin: customize, generate, deploy, and edit real HTML structure on the go.
Aug 2026 · 2 min read

Building VocoLiss: Text-to-Speech Reading With AI That Degrades Honestly Offline
I shipped VocoLiss — turn documents into speech and study aids. The hard part was race-safe TTS highlighting and AI that falls back offline without lying when the server actually errored.
Aug 2026 · 3 min read

Building App Builder: A Phone Client for Remote Template-to-APK Builds
I shipped App Builder — customize a template on your phone and get a signed APK from a remote worker. The hard part was making the client thin, the forms dynamic, and demo mode honest when the server isn’t there.
Aug 2026 · 3 min read

Building FloorMind: AI Floor Plans That Stay Editable — Even Offline
I shipped FloorMind — describe a home, get a floor plan you can still edit. The hard part wasn’t the LLM. It was making “AI” return rooms and openings, with a full offline path when there’s no API key.
Aug 2026 · 3 min read

Building Pixedge: A Wallpaper Feed That Stays Smooth With a Smart Image Pipeline
Wallpaper apps look simple. Pixedge’s real work is an image pipeline that prioritizes what you see and never double-fetches the same URL.
Aug 2026 · 2 min read
.jpg&w=3840&q=75)
Building SellSnap AI: Seller Campaigns With an Offline-First Demo Path
I shipped SellSnap for small online sellers. The bet wasn’t cloud AI. It was a complete campaign flow that still works in demo mode on your phone.
Aug 2026 · 2 min read

Building QR Scanner Pro: Batch Workflows and an App Lock
I shipped a QR app that goes past the viewfinder — batch tools, exports, and a lock screen for history people underestimate as sensitive.
Aug 2026 · 2 min read

Building ScanCam: On-Device Document OCR That Admits What It Can’t Do
I shipped ScanCam — scan, OCR, PDF, sign, share on-device. The hard part wasn’t recognition. It was refusing to oversell handwriting, and designing privacy as the default path.
Aug 2026 · 3 min read

Building Cadora: On-Device 3D CAD Where Face IDs Matter More Than Triangles
I shipped Cadora — solid modelling on a phone. The hard part wasn’t drawing triangles. It was keeping logical faces alive so Push/Pull still makes sense after a boolean.
Aug 2026 · 4 min read
_b_Editorial_portfolio_.png&w=3840&q=75)
Building Songora: Rendering a Full Song on a Phone Without Sending Audio to the Cloud
I shipped Songora — describe an idea, get a song. The interesting part wasn’t the prompt. It was rendering melody, vocals, and a wavetable mix on-device, and refusing to fake a vocal track when the phone couldn’t sing.
Aug 2026 · 4 min read

Building iRun AI: An Explainable Running Coach That Refuses to Hallucinate Workouts
I shipped iRun AI - a running coach that explains itself. The hard part wasn’t tracking runs. It was designing AI that can propose a plan change, but never invent a workout.
Aug 2026 · 4 min read

Building VidWeave: On-Device Video Rendering That Keeps Edits Accurate
Last week I shipped VidWeave - a mobile video studio. The hardest (and most interesting) part wasn’t the editor UI. It was rendering on-device at multiple resolutions without breaking the user’s edits.
Aug 2026 · 3 min read

Four Pull Requests in Flutter 3.47.0
Four of my pull requests shipped in Flutter 3.47.0. None of them add a feature — they remove imports from test files. Here's why that work matters, and what the review process taught me about contributing to a framework millions of developers depend on.
Aug 2026 · 4 min read