Flutter

40 things tagged Flutter.

flutter/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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
flutter/flutter

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
Sanaullah49/expense_tracker

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

flutter

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

pregnancy

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

baby

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

pilates

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

kegal

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

web

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

speech

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

app

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

floor

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

pixedge

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

sellsnap

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

qr

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

scan

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

3d

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

Song Generator

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

irun

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

VidWeave

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

Dark

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