mobile

31 things tagged mobile.

flutter/flutter

Include Wrap spacing in max intrinsic main-axis extent

flutter/flutter · #192613

Include spacing in RenderWrap.computeMaxIntrinsicWidth (horizontal) and computeMaxIntrinsicHeight (vertical). IntrinsicWidth / IntrinsicHeight consumers (including PopupMenu) were under-sizing children that use Wrap(spacing: ...), because max intrinsic main-axis extent ignored inter-child spacing. Fixes Pre-launch Checklist I read the [Contributor Guide] and followed the process outlined there fo…

open
status
+45/−0
diff
179K
repo stars
flutter/flutter

Apply TestSemantics fixes to the material copy of semantics_tester

flutter/flutter · #192164

packages/flutter/test/material/semantics_tester.dart is a copy of packages/flutter/test/widgets/semantics_tester.dart, kept so material tests do not cross-import from widgets. It did not receive the fixes from #191938, so the two copies had drifted by exactly those four bugs: controlsNodes != controlsNodes compares the field to itself, so the setEquals check is unreachable and the expectation nev…

closed
status
+129/−4
diff
179K
repo stars
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…

merged
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

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

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

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

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

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

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

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

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