Repository navigation
Comparing changes
Open a pull request
base repository: flutter/packages
base: 08faf64
head repository: flutter/packages
compare: 653628e
- 16 commits
- 131 files changed
- 12 contributors
Commits on Nov 10, 2026
-
Roll Flutter from d46382112aa6 to fffd8c22ae64 (21 revisions) (#13614)
flutter/flutter@d463821...fffd8c2 2026-11-10 [email protected] Roll Fuchsia Test Scripts from 8QcsP_SmbsT09VgUs... to PXc5D7S_q6sIYpfFJ... (flutter/flutter#196273) 2026-11-10 [email protected] [web] Accept the capped letter spacing line shift in kitchensink (flutter/flutter#196148) 2026-11-10 [email protected] Fix Vulkan MSAA diagonal seam in FramebufferBlend (flutter/flutter#196197) 2026-11-10 [email protected] Read back images on the raster thread on OpenGLES (flutter/flutter#195927) 2026-11-10 [email protected] [web] Unify ui.Paint across CanvasKit and Skwasm (flutter/flutter#196071) 2026-11-10 [email protected] Roll Fuchsia Test Scripts from p3N3B-Kchh1bthB6n... to 8QcsP_SmbsT09VgUs... (flutter/flutter#196249) 2026-11-09 [email protected] [Impeller] Reland clipped BackdropFilter square corners fix (flutter/flutter#195716) 2026-11-09 [email protected] [web] Recreate canvas and context on CkOffscreenSurface resize to fix WebGL clipping (flutter/flutter#192769) 2026-11-09 [email protected] Roll Dart SDK from ee0f66fa0ad2 to a2baae273bb2 (1 revision) (flutter/flutter#196245) 2026-11-09 [email protected] Add Mac web_tool_tests_1_2 and _2_2 in bringup (flutter/flutter#196241) 2026-11-09 [email protected] Roll pub packages (flutter/flutter#196246) 2026-11-09 [email protected] Increase number of 'Windows tool_integration_tests' subshards (flutter/flutter#196243) 2026-11-09 [email protected] Roll Fuchsia Test Scripts from Jo-ZgQSNDuPsjlZ4s... to p3N3B-Kchh1bthB6n... (flutter/flutter#196238) 2026-11-09 [email protected] Skip UIScene pre-migration test cases on Xcode 27 (flutter/flutter#194755) 2026-11-09 [email protected] [flutter_tools] Share Analytics.isBot and make isRunningOnBot sync (flutter/flutter#194744) 2026-11-09 [email protected] [flutter_tools] Retry chromedriver startup when its port is taken (flutter/flutter#196150) 2026-11-09 [email protected] Remove unused vulkan_provider.cc (flutter/flutter#195513) 2026-11-09 [email protected] Roll Dart SDK from 3b174b7217fe to ee0f66fa0ad2 (13 revisions) (flutter/flutter#196217) 2026-11-09 [email protected] Goma is dead, long live RBE! (Take 2) (flutter/flutter#196212) 2026-11-09 [email protected] Split DevTools customer tests into its own customer_testing_devtools shard (flutter/flutter#195871) 2026-11-09 [email protected] Split mac_host_{debug,profile,release}_arm64_tests into one step per type (flutter/flutter#196031) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Configuration menu - View commit details
-
Copy full SHA for 6fbd01a - Browse repository at this point
Copy the full SHA 6fbd01aView commit details -
[web_benchmarks] Fix benchmark stalling when only repainting views th…
…at are dirty (#13089) This is required in order to reland flutter/flutter#192128. Fixes flutter/flutter#193295. The code is little bit hairy because current stable does not have `RenderView.markNeedsCompositeFrame`. I will clean it up when that changes. ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for 2c1c1bd - Browse repository at this point
Copy the full SHA 2c1c1bdView commit details -
[google_sign_in_android] Rename keep.xml to google_sign_in_keep.xml (#…
…13475) Rename keep.xml to google_sign_in_keep.xml Fixes: flutter/flutter#194943 ## Pre-Review Checklist
Configuration menu - View commit details
-
Copy full SHA for 5ba81cb - Browse repository at this point
Copy the full SHA 5ba81cbView commit details -
[camera_android] Fix stopVideoRecording returning JPEG when takePictu…
…re runs during recording (#13070) ## Description When `takePicture()` is called during an active video recording, `stopVideoRecording()` could return the JPEG path instead of the MP4 path because a single `captureFile` field was shared. This change introduces a dedicated `videoCaptureFile` for video recording and keeps `captureFile` for still capture. ## Related Issue Fixes flutter/flutter#192927 ## Tests - Unit tests in `CameraTest.java` - Integration test: `stopVideoRecording returns mp4 after takePicture during recording` ## Pre-Review Checklist
Configuration menu - View commit details
-
Copy full SHA for 0f29291 - Browse repository at this point
Copy the full SHA 0f29291View commit details -
[cupertino_ui] Localize CupertinoActionSheet semantics label (#13377)
`CupertinoActionSheet` wraps its content in a `Semantics` node that names and scopes the route, labelled with the hardcoded string `'Alert'`. Because this node names the route, apps can't override the label, so VoiceOver announces "Alert" in English whatever the app's locale. This PR uses `CupertinoLocalizations.of(context).alertDialogLabel` instead. `CupertinoAlertDialog` in the same file already does this, and every `cupertino_*.arb` file already translates the key (e.g. `"Alerta"` for `pt`). The English default is still `'Alert'`, so the existing semantics test is unchanged. Note: `CupertinoActionSheet` now looks up `CupertinoLocalizations`, so it needs a localizations ancestor, which `CupertinoApp` provides. `CupertinoAlertDialog` already has this requirement. Changes: - `lib/src/dialog.dart`: use the localized `alertDialogLabel` for the action sheet's semantics label. - `test/action_sheet_test.dart`: add a regression test that shows an action sheet under the `pt` locale and checks that the dialog semantics node is labelled "Alerta". The test fails before this change and passes after it. - `pending_changelogs/localize_action_sheet_semantics_label.yaml`: patch-level changelog entry, following the package's batch release process. Fixes flutter/flutter#195019 ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for 254a37e - Browse repository at this point
Copy the full SHA 254a37eView commit details -
[image_picker_ios] Convert the iOS example app and UI tests to Swift (#…
…13570) Converts the `image_picker_ios` iOS example app and UI tests from Objective-C to Swift: * `AppDelegate` is now Swift. `@main` replaces `main.m`, and `AppDelegate.h` becomes `Runner-Bridging-Header.h`. * `ImagePickerFromGalleryUITests` and `ImagePickerFromLimitedGalleryUITests` are now Swift. * The example still seeds the photo library from `jpgImageTall.jpg`, and logs when that fixture is missing. * Drops the `@available(iOS 14, *)` checks in the UI tests. The example already requires iOS 15. The plugin implementation is unchanged from #13493. Bumps image_picker_ios to **0.8.13+16**. Follow-up to the Obj-C → Swift migration, following #13493. Part of flutter/flutter#119107 ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for 75094a6 - Browse repository at this point
Copy the full SHA 75094a6View commit details -
[pigeon] Support multi-engine Native Interop registration and instanc…
…e-aware unregistration (#13576) Associates Native Interop (`useJni` / `useFfi`) `@HostApi` and `@FlutterApi` registrations with the Flutter engine that made them. Lookups route to the calling engine's registration when the engine is known, and detaching one engine removes only that engine's registration. Previously, attaching a secondary `FlutterEngine` overwrote any existing registration under the same `name`. Detaching that engine via `register(null)` then cleared the entry for all remaining engines in the process. For example, `shared_preferences_android` failed in the main engine after a background engine detached (flutter/flutter#194920). > [!NOTE] > Per review, the standalone `@FlutterApi` fixes (the `pigeonVar_` prefix for internal `_<Api>Registrar` members so `register` / `dartApi` no longer collide on JNI, `implement` with an empty `name`, and the `objective_c <9.6.3` test pin) are split out into #13609 so they can land on 29.x first. This PR contains only the unregistration and multi-engine changes, which depend on each other. ### Engine identity without deprecated APIs or new stable requirements `register` / `unregister` now take the engine handle that plugins and apps already have. Pigeon derives an engine key from it, so moving to `engineId` once flutter/flutter#195881 reaches `stable` is an internal change, not another breaking change: | Caller | Engine key | |---|---| | Kotlin app: `MyApiRegistrar().register(api, flutterEngine)` | `FlutterEngine.engineId` (public on stable; exact) | | Kotlin plugin: `MyApiRegistrar().register(api, binding)` | `binding.getEngineId()` when the embedding provides a non-zero value (#195881, detected at runtime, survives R8). Otherwise a per-engine key from `binding.binaryMessenger`. | | Swift: `MyApiSetup.register(api:registrar:)` | `registrar.engineIdentifier` when available and non-zero (detected at runtime). Otherwise a per-engine key from the registrar's messenger. | Generated code never calls deprecated embedding APIs such as `FlutterPluginBinding.getFlutterEngine()`. An engine ID of `0` is treated as unknown, because real IDs are never `0`. `0` shows up for registrars whose engine is already deallocating, and for unstubbed test doubles, and must not be shared between engines. Dart lookups (`createWithNativeInteropApi()` / `<HostApi>ForNativeInterop.getInstance()`) choose a registration in this order: 1. The one whose key matches `PlatformDispatcher.instance.engineId`. 2. Otherwise, if the isolate has no engine ID, one from the engine this isolate first resolved a handle from. This is tracked per generated Pigeon file. 3. Otherwise, the most recent registration. Native `@FlutterApi` lookups use the same keys through `<FlutterApi>Registrar` `getInstance(binding | flutterEngine)` in Kotlin and `getInstance(registrar:)` in Swift. **Exact vs. best-effort routing.** Routing is exact whenever native code knows the engine identifier: Kotlin `register(api, flutterEngine)` always, and plugin bindings / registrars on Flutter versions that expose it. Otherwise it is best-effort. It is correct when each engine's Dart resolves its first handle from each Pigeon file at startup, but it can pick another engine's registration when: - Engines are created back-to-back before their Dart starts. - A file's first lookup happens lazily while another engine is attached. - Lookups come from `Isolate.spawn` / `Isolate.run` isolates. macOS plugins receive no detach callback, so macOS registrations currently outlive their engine. The README and guides document these limits and recommend platform channels / `@ProxyApi` for engine-stateful APIs in those cases. Full engine routing remains tracked in flutter/flutter#195877. ### Summary of Changes * **Engine-keyed registration stacks & `unregister`**: Each `name` keeps an ordered stack of `(engine key, instance)` entries. * Re-registering the same instance for the same engine moves it to the top and keeps its existing wrapper. * `unregister(api, engine)` removes only that engine's entry, even out of order. If the engine key can't be resolved, it falls back to matching by instance identity, but only when a single engine holds that instance. * **Detached `@HostApi` safety**: Calls through a handle whose instance was unregistered throw `unregistered-instance` (Kotlin/Swift) instead of crashing. Swift `Setup` wrappers use `resolveApi() throws` instead of `api!`. * **Engine teardown safety (Swift)**: Engine keys are cached per registrar. `unregister` from `detachFromEngine(for:)` therefore works while the engine is deallocating and its messenger is already gone. * **Registry thread safety**: Native Interop calls from background isolates run on worker threads. Registration maps, wrapper API references, and engine-key caches are therefore guarded internally: * Kotlin uses `synchronized` / `@Synchronized` and `@Volatile`. * Swift uses `NSLock` / `NSRecursiveLock`. Removed entries are released after unlocking, so their `deinit` doesn't run while the lock is held. * This doesn't make registration a thread-safe API contract. Registration is still expected on the main thread. * **Dart `@FlutterApi`**: * `<FlutterApi>.setUp(null)` deregisters only the current isolate's native callback. * Registering via `setUp(a)` or the registrar, then calling `setUp(null)`, now correctly removes `a`. * Adds `<FlutterApi>Registrar.unregister`. * Registrations are tagged with the isolate's engine so native lookups reach the right isolate. * **Documentation**: * Updates the README, Native Interop guide, migration guide, migration skill, and `CHANGELOG.md`, including the routing guarantees and limits above. * Notes that `registrar.publish(instance)` is required for iOS to call `detachFromEngine(for:)`. * **Tests**: * Generator unit tests for Dart, Kotlin, and Swift. * Kotlin `NativeInteropRegistrarTest`, iOS `RunnerTests`, and macOS `BasicCompileTest`. These cover: * the same API on two engines * out-of-order unregister * the identity fallback * resolve order * `@FlutterApi` lookup by engine * Real secondary-engine and multi-isolate integration tests. * An integration test asserting that registrations use the exact `PlatformDispatcher.instance.engineId` when the platform exposes it. It runs in minified Android release builds to cover R8. ### Breaking Native Interop API Changes (`30.0.0`) * **Engine-aware registration**: * `@HostApi` `register` / `unregister` take the engine: `MyApiRegistrar().register(api, binding)` / `register(api, flutterEngine)` in Kotlin, and `MyApiSetup.register(api:registrar:)` in Swift. `unregister` follows the same shape. * Native `@FlutterApi` lookup takes the engine: `getInstance(binding | flutterEngine)` in Kotlin and `getInstance(registrar:)` in Swift. The name-only native `getInstance` is removed. * **Explicit deregistration**: * Replaces `register(null)` / `register(api: nil)` / `registerInstance(null | nil)` with `unregister` / `unregisterInstance`, which remove only the given instance for the given engine. * `register` / `registerInstance` require a non-null API and return `void` / `Unit` / `Void`. * **Swift `@HostApi` `AnyObject` constraint**: FFI Swift `@HostApi` protocols are constrained to `AnyObject` so instances can be matched by identity. * **Reserved names**: `pigeonResolveInstance`, `pigeonEngineKey`, and `pigeonEngineKeyOf` are reserved as `@HostApi` method names. Part of flutter/flutter#195877 Part of flutter/flutter#194920 ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for a75bde3 - Browse repository at this point
Copy the full SHA a75bde3View commit details
Commits on Nov 11, 2026
-
[pigeon] Adds Native Interop FFI codec serialization for NS types (#1…
…3616) Adds support for serializing Foundation / Objective-C values (`Foundation.Data`, `NSData`, `NSArray`, and `NSDictionary`) as `Any?` in the Swift Native Interop (`useFfi: true`) hybrid codec. Previously, `PigeonInteropWriter.writeValue` only handled Swift `Array`, `Dictionary`, and `[UInt8]` values (via `PigeonInteropList`, `PigeonInteropMap`, and exact `[UInt8].self`), hitting `preconditionFailure` when Apple Foundation APIs (such as `UserDefaults`) returned `NSArray`, `NSDictionary`, or `Data`/`NSData` inside untyped `Any` values or collections. Adding `Foundation.Data`, `NSArray`, and `NSDictionary` fallbacks matches `FlutterStandardWriter` behavior and uses qualified `Foundation.Data` so it does not collide with user-defined Pigeon classes named `Data`. ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for e900712 - Browse repository at this point
Copy the full SHA e900712View commit details -
[flutter_svg] Remove failed async loads from Cache._pending (#13604)
In `Cache.putIfAbsent`, `pendingResult.then((ByteData data) { ... })` did not attach an `onError` handler. When an asynchronous SVG load rejected (for example, `SvgNetworkLoader` failing while offline or throwing `http.ClientException` on non-2xx responses), `_pending.remove(key)` never ran—leaving the rejected `Future` permanently cached in `_pending[key]` across retries—and the unguarded child `Future` from `.then` reported an uncaught error to the active `Zone` even when callers awaited `putIfAbsent` inside `try`/`catch`. Attaches `onError` to `pendingResult.then` so failed loads evict `_pending[key]` without leaking uncaught `Zone` errors while preserving the caller's rejected `Future`. Fixes b/583860731 ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.Configuration menu - View commit details
-
Copy full SHA for 99943dd - Browse repository at this point
Copy the full SHA 99943ddView commit details -
[cupertino_ui] Include selectionHandleColor in NoDefaultCupertinoThem…
…eData equality (#13450) `NoDefaultCupertinoThemeData.operator ==` and `hashCode` leave out `selectionHandleColor`, so two themes that differ only in that color compare equal. `CupertinoThemeData`, which extends it, already includes the field. Because `ThemeData ==` compares `cupertinoOverrideTheme`, an app that passes a `NoDefaultCupertinoThemeData` there and changes only its `selectionHandleColor` gets an "equal" `ThemeData`, and dependents aren't rebuilt. This adds the field to both methods, matching `CupertinoThemeData`, and adds a unit test. Fixes flutter/flutter#195391 ## Pre-Review Checklist
Configuration menu - View commit details
-
Copy full SHA for b762b3f - Browse repository at this point
Copy the full SHA b762b3fView commit details -
[vector_graphics] Catch any throwable in useHtmlRenderObject() and ca…
…che HTML fallback (#13545) In Flutter Web under the CanvasKit and WebAssembly renderers, vector graphics determine whether to use native raster rendering (`_RawVectorGraphicWidget`) or an HTML compatibility renderer (`_RawWebVectorGraphicWidget`) by calling `useHtmlRenderObject()`, which probes runtime support by recording a 1x1 `ui.Picture` and invoking `picture.toImageSync(1, 1)`. Previously, `useHtmlRenderObject()` caught only a narrow allow-list of exception types (`UnsupportedError`, `StateError`, and `NoSuchMethodError`). When WebGL surface creation or OffscreenCanvas initialization fails mid-session, CanvasKit and browser environments can throw unhandled throwables such as bare JavaScript strings (`'Canvas with id [object OffscreenCanvas] was not found'`), foreign JS errors, or `null`. Because these were unhandled, `VectorGraphic` widgets crashed, and because `useHtmlRenderObject()` is evaluated in a static field initializer, subsequent widget builds re-evaluated the uninitialized field and re-threw continuously. Furthermore, `_cachedUseHtmlRenderObject` remained `null` on failure, preventing the HTML fallback from ever being recorded. This PR updates `useHtmlRenderObject()` to catch any throwable using a bare `catch (_)` block, sets `_cachedUseHtmlRenderObject = true` on any failure, ensures `ui.Picture` and `ui.Image` resources are always disposed in `finally`, and adds unit tests covering five distinct failure modes, success path caching, and reset lifecycle transitions. Fixes flutter/flutter#189451 ## Behavioral Changes - Before: When `picture.toImageSync(1, 1)` threw non-Dart errors (such as bare JavaScript strings or foreign JS errors during WebGL/canvas failures), the throwable escaped unhandled from `useHtmlRenderObject()`, crashing `VectorGraphic` widget build passes and re-throwing repeatedly without caching a fallback. - After: Any throwable thrown during `toImageSync(1, 1)` is caught, causing `useHtmlRenderObject()` to return `true` (selecting the HTML compatibility render object) and permanently cache `_cachedUseHtmlRenderObject = true` so subsequent widget builds reuse the fallback without re-triggering the failing probe. ## Where to focus - **Key Architectural Decisions**: - Replaced specific `on` exception clauses with an open `catch (_)` block in `render_object_selection.dart`. On web compilation targets (`dart2js` and `dart2wasm`), host JavaScript runtimes can throw arbitrary values (including bare strings, JS objects, or null); Dart null safety excludes `null` from `Object`, making `catch (_)` the only clause that intercepts every possible thrown entity. - Latching `_cachedUseHtmlRenderObject = true` on any caught throwable prevents repeat probe execution and CPU thrashing during environmental rendering failures. - **Non-Obvious Logic**: - Checking `if (_cachedUseHtmlRenderObject != null)` prior to `if (!kIsWeb && debugToImageSyncOverride == null)` allows non-web test environments (such as the Dart VM) to hermetically simulate both probe success and probe failure via `debugToImageSyncOverride` without allocating native browser surfaces. - **Primary Review Files**: - `packages/vector_graphics/lib/src/render_object_selection.dart`: Core fallback catch and caching logic. - `packages/vector_graphics/test/render_object_selection_test.dart`: Hermetic unit test suite covering string, error, exception, null, and foreign object throws, plus caching and reset semantics. ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for 5a7871b - Browse repository at this point
Copy the full SHA 5a7871bView commit details -
[shared_preferences] Updates Pigeon to 30.0.1 to support multi-engine…
… registration and deregistration. (#13617) Updates `shared_preferences_android` and `shared_preferences_foundation` to Pigeon 30.0.1 and `jni` `^1.1.1`. - Supports multi-engine registration and deregistration. - Removes the manual web stub/real FFI export and R8 consumer rules workarounds. fixes flutter/flutter#194920
Configuration menu - View commit details
-
Copy full SHA for 7729836 - Browse repository at this point
Copy the full SHA 7729836View commit details -
[cupertino_ui] Fix CupertinoSheetRoute throwing when a drag ends duri…
…ng a pending relayout (#13316) Dragging a `CupertinoSheetRoute` converts drag deltas and the release velocity into fractions of the sheet's height. Both drag paths read that height from `context.size`: `_CupertinoDragGestureDetectorState.sheetHeight` for regular sheets, and `_dragUpdate` / `_handleDragEnd` in `_CupertinoDraggableScrollableSheetState` for sheets built with `scrollableBuilder`. `Element.size` asserts when the render object is dirty for layout, so a drag that ends while a relayout is pending throws `Cannot get size from a render object that has been marked dirty for layout.` The reporter saw it cascade into `_drag == null` asserts in `ScrollableState`, after which the sheet stopped responding. In release the assert is stripped and the read returns the last laid out size. The fix reads the height from the `RenderBox` directly. That's the size the sheet was last laid out at, which is the size the drag was made against, and it's what release builds were already using. The Material `BottomSheet` reads its height for drag updates and fling velocity the same way (`_childHeight`). ## Tests Two regression tests, one per drag path. Each starts a partial drag, marks the box the sheet measures as dirty, and releases before the next frame. Both fail on `main` with the assertion above, and both pass with the fix, with the sheet settling back to where it started. The rest of `sheet_test.dart` passes as well (44 tests in total). One limitation: the reporter hit this on a device when the keyboard was dismissed mid-drag. Changing the view insets mid-drag in a widget test doesn't reproduce it, because the relayout that follows lands before the pointer up. So the tests set up the condition from the reporter's stack trace directly, not the keyboard sequence. Fixes flutter/flutter#194681 ## Pre-Review Checklist I used AI tooling while working on this, and reviewed and tested all of it myself. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for 054d9d1 - Browse repository at this point
Copy the full SHA 054d9d1View commit details -
[pigeon] Fix basePath resolution when paths share a string prefix wit…
…h basePath (#13342) Replaces string-prefix `!....startsWith(basePath)` checks across `ffigen_config_generator.dart`, `jnigen_config_generator.dart`, `pigeon_lib.dart`, and `pigeon_lib_internal.dart` with a path-aware `isWithinOrEquals(basePath, ...)` helper using `path.posix.equals` and `path.posix.isWithin`. Previously, when `basePath` was set (e.g. `basePath: 'app'`) and an output or directory path happened to start with the same string prefix without being inside `basePath` (e.g. `dartOut: 'app_bindings/lib/src/messages.g.dart'`), `.startsWith(basePath)` evaluated to `true` and skipped prepending `basePath`, while `_getFile` unconditionally joined `basePath` and `output`. Follow-up from #13283 (review).
Configuration menu - View commit details
-
Copy full SHA for 86509a5 - Browse repository at this point
Copy the full SHA 86509a5View commit details -
[material_ui] Document how to programmatically clear DropdownMenu sel…
…ection (#13266) ## Description Clarifies how to programmatically clear or reset the selection in `DropdownMenu`. Setting initialSelection to null on a rebuild does not clear the text field, because DropdownMenu only updates the text field when initialSelection changes to a value that matches one of the dropdownMenuEntries. This PR documents that the selection should be cleared by providing a TextEditingController and calling controller.clear() alongside setting the state variable to null, and adds an interactive code sample demonstrating this pattern. Fixes flutter/flutter#177599 ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for b9397f2 - Browse repository at this point
Copy the full SHA b9397f2View commit details -
Roll Flutter from fffd8c22ae64 to b98afb524077 (31 revisions) (#13623)
flutter/flutter@fffd8c2...b98afb5 2026-11-11 [email protected] Roll Dart SDK from 172cf8f121c0 to 8f15c4ca2d41 (1 revision) (flutter/flutter#196367) 2026-11-11 [email protected] Roll Skia from 657283e78115 to cc4c54f752ba (5 revisions) (flutter/flutter#196365) 2026-11-11 [email protected] Roll Skia from 2605c4a9761c to 657283e78115 (1 revision) (flutter/flutter#196358) 2026-11-11 [email protected] Roll Dart SDK from 890c6d15334c to 172cf8f121c0 (1 revision) (flutter/flutter#196352) 2026-11-11 [email protected] [flutter_tools] Migrate general.shard project, runner, and web tests off globals (flutter/flutter#196128) 2026-11-11 [email protected] [flutter_tools] Migrate test helpers and integration tests off globals (flutter/flutter#196124) 2026-11-11 [email protected] [web] Report skwasm WebGL context creation failure instead of hanging (flutter/flutter#193293) 2026-11-11 [email protected] [flutter_tools] Migrate commands.shard tests off globals (flutter/flutter#196139) 2026-11-11 [email protected] [devicelab] Fix memory benchmark tap synchronization and swipe flakes (flutter/flutter#194457) 2026-11-11 [email protected] Roll Skia from 06062e36d938 to 2605c4a9761c (2 revisions) (flutter/flutter#196350) 2026-11-11 [email protected] Do not wait again for a closed mock event stream in tear down (flutter/flutter#196110) 2026-11-11 [email protected] [gen_l10n] Add `use-explicit-plural-values` option (flutter/flutter#194816) 2026-11-11 [email protected] Roll Skia from 7bd33f8a3b70 to 06062e36d938 (2 revisions) (flutter/flutter#196340) 2026-11-11 [email protected] Skip redundant work in plugin_test_* (flutter/flutter#196258) 2026-11-10 [email protected] Drop test_timeout_secs from shards that no longer need it (flutter/flutter#196277) 2026-11-10 [email protected] Roll Dart SDK from 15c1699d3eeb to 890c6d15334c (1 revision) (flutter/flutter#196321) 2026-11-10 [email protected] iOS: Extract FlutterPlatformViewsController platform-thread state to Obj-C (flutter/flutter#196142) 2026-11-10 [email protected] Remove `Mac web_tool_tests` and take new subshard builders out of bringup (flutter/flutter#196276) 2026-11-10 [email protected] Roll Skia from 9c3d43d8a04b to 7bd33f8a3b70 (12 revisions) (flutter/flutter#196317) 2026-11-10 [email protected] Take customer_testing_devtools out of bringup (flutter/flutter#196239) 2026-11-10 [email protected] Roll ICU from a0ea93436c52 to b09986242cfb (1 revision) (flutter/flutter#196316) 2026-11-10 [email protected] [flutter_tools] Avoid unlinking native_assets.json and handle EXDEV (flutter/flutter#196134) 2026-11-10 [email protected] Remove old `Windows tool_integration_tests` builders and take the new shards out of bringup (flutter/flutter#196275) 2026-11-10 [email protected] [SwiftPM] Disable tests for when settings fail to compile (flutter/flutter#196310) 2026-11-10 [email protected] Roll Fuchsia Test Scripts from PXc5D7S_q6sIYpfFJ... to oEU515sDqSTvD8Spx... (flutter/flutter#196289) 2026-11-10 [email protected] Fix ime insets animation jump (flutter/flutter#191453) 2026-11-10 [email protected] Link to original PR in automatic cherry-pick PRs (flutter/flutter#196130) 2026-11-10 [email protected] Roll Packages from 565c657 to 08faf64 (9 revisions) (flutter/flutter#196296) 2026-11-10 [email protected] Roll Skia from b11315d0a096 to 9c3d43d8a04b (45 revisions) (flutter/flutter#196295) 2026-11-10 [email protected] Replace type-specific window widgets with a single Window widget (flutter/flutter#196002) 2026-11-10 [email protected] Roll Dart SDK from a2baae273bb2 to 15c1699d3eeb (2 revisions) (flutter/flutter#196294) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Configuration menu - View commit details
-
Copy full SHA for 653628e - Browse repository at this point
Copy the full SHA 653628eView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 08faf64...653628e