mobile
31 things tagged mobile.
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
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
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
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
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
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
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

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

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