Every change Boring Doc has indexed from official sources: breaking-change guides, hotfix changelogs and release notes. Filter by category, impact, platform, series and evidence type.
`ScrollBehavior`s now allow or disallow drag scrolling from specified `PointerDeviceKind`s. `ScrollBehavior.dragDevices`, by default, allows scrolling widgets to be dragged by all `PointerDeviceKind`s except for `PointerDeviceKind.mouse`.
Official migration guideVerified classificationFrameworkSource Details
`OneSequenceGestureRecognizer.addAllowedPointer()` was changed to take a `PointerDownEvent`, like its superclass. Previously, it accepted the more general `PointerEvent` type, which was incorrect.
Official migration guideVerified classificationFrameworkSource Details
The `package:flutter_lints` defines the latest set of recommended lints that encourage good coding practices for Flutter apps, packages, and plugins. Projects created with `flutter create` using Flutter version 2.5 or newer are already enabled to use the latest set of recommended lints. Projects created prior to that version can upgrade to it with the instructions in this guide.
Official migration guideVerified classificationFrameworkSource Details
Flutter now renders all web platform views in a consistent location of the DOM, as direct children of `flt-glass-pane` (regardless of the rendering backend: `html` or `canvaskit`). Platform views are then _"slotted"_ into the correct position of the App's DOM with standard HTML features.
Official migration guideVerified classificationFrameworkSource Details
`FlutterActivity` or `FlutterFragment`, and don't manually embed a `FlutterView` inside your own custom `Activity` (this should be uncommon), you can stop reading.
Official migration guideVerified classificationFrameworkSource Details
Flutter now defaults to _not_ clip except for a few specialized widgets (such as `ClipRect`). To override the no-clip default, explicitly set `clipBehavior` in widgets constructions.
Official migration guideVerified classificationFrameworkSource Details
A new method named `computeDryLayout` was added to the `RenderBox` protocol. Subclasses of `RenderBox` are expected to implement it to correctly report their desired size given a set of `BoxConstraints` during intrinsic calculations. Subclasses that implement `computeDryLayout` no longer need to override `performResize`.
Official migration guideVerified classificationFrameworkSource Details
This migration guide describes conversion of code that uses the `nullOk` parameter on multiple `of` static accessors and related accessors to use alternate APIs with nullable return values.
Official migration guideVerified classificationFrameworkSource Details
The `SnackBar` API within the `Scaffold` is now handled by the `ScaffoldMessenger`, one of which is available by default within the context of a `MaterialApp`.
Official migration guideVerified classificationFrameworkSource Details
The `ThemeData` properties that controlled the look of selected text in Material widgets have been moved into their own `TextSelectionTheme`. These properties include `cursorColor`, `textSelectionColor`, and `textSelectionHandleColor`. The defaults for these properties have also been changed to match the Material Design specification.
Official migration guideVerified classificationFrameworkSource Details
To control the behavior of `maxLength` in the `LengthLimitingTextInputFormatter`, use `maxLengthEnforcement` instead of the now-deprecated `maxLengthEnforced`.
Official migration guideVerified classificationFrameworkSource Details
If you write Java JUnit tests (such as Robolectric tests) against the Flutter engine's Java embedding and used the `FlutterMain.setIsRunningInRobolectricTest(true)` API, replace it with the following:
Official migration guideVerified classificationFrameworkSource Details
In accordance with Flutter's Deprecation Policy, deprecated APIs that reached end of life after the 1.22 stable release have been removed. This is the first time that deprecated APIs have been removed from Flutter, and some of these deprecations predate our migration guide policy.
Official migration guideVerified classificationFrameworkSource Details
The previous auto validation API for the `Form` and `FormField` widgets didn't control when auto validation should occur. So the auto validation for these widgets always happened on first build when the widget was first visible to the user, and you weren't able to control when the auto validation should happen.
Official migration guideVerified classificationFrameworkSource Details
The `flutter create` templates for apps and plugins no longer create Android wrapping based on the v1 Android embedding as part of our gradual Android v1 embedding deprecation process described in our Android Migration Summary.
Official migration guideVerified classificationFrameworkSource Details
In Flutter an `Intent` is an object that's typically bound to a keyboard key combination using the `Shortcuts` widget. An `Intent` can be bound to an `Action`, which can update the application's state or perform other operations. In the course of using this API, we identified several drawbacks in the design, so we have updated the Actions API to make it easier to use and understand.
Official migration guideVerified classificationFrameworkSource Details
A new getter, `TextInputClient.currentAutofillScope`, was added to the `TextInputClient` interface; all `TextInputClient` subclasses must provide a concrete implementation of `currentAutofillScope`.
Official migration guideVerified classificationFrameworkSource Details
A new set of basic material button widgets and themes have been added to Flutter. The original classes have been deprecated and will eventually be removed. The overall goal is to make buttons more flexible, and easier to configure via constructor parameters or themes.
Official migration guideVerified classificationFrameworkSource Details
Instances of `Dialog`, as well as `SimpleDialog`, `AlertDialog`, and `showTimePicker`, now have a default shape of a `RoundedRectangleBorder` with a `BorderRadius` of 4.0 pixels. This matches the current specifications of Material Design. Prior to this change, the default behavior for `Dialog.shape`'s `BorderRadius` was 2.0 pixels.
Official migration guideVerified classificationFrameworkSource Details
A new boolean getter `isWaitingForExitingDecision` was added to the route transition record and the `isEntering` getter was renamed to `isWaitingForEnteringDecision`. In the `resolve()` method for the transition delegate, use the `isWaitingForExitingDecision` to check if an exiting route actually needs an explicit decision on how to transition off the screen. If you try to make a decision for an existing route that _isn't_ waiting for a decision, Flutter throws an assertion error.
Official migration guideVerified classificationFrameworkSource Details
Instances of `RenderEditable` must be laid out before processing hit testing. Trying to hit-test a `RenderEditable` object before layout results in an assertion such as the following:
Official migration guideVerified classificationFrameworkSource Details
The services layer now depends on the scheduler layer. Previously, the opposite was true. This may affect you if you have defined custom bindings overriding Flutter's `SchedulerBinding` or `ServicesBinding`.
Official migration guideVerified classificationFrameworkSource Details
We changed the semantics traverse order of the overlay entries in modal routes. Accessibility talk back or voice over now focuses the scope of a modal route first instead of its modal barrier.
Official migration guideVerified classificationFrameworkSource Details
Instances of `TextField` must have a `MaterialLocalizations` present in the widget tree. Trying to instantiate a `TextField` without the proper localizations results in an assertion such as the following:
Official migration guideVerified classificationFrameworkSource Details
Two new values were added to the `TargetPlatform` enum that could require additional cases in switch statements that switch on a `TargetPlatform` and don't include a `default:` case.
Official migration guideVerified classificationFrameworkSource Details
The local position returned by `AnnotatedRegionLayers` in an annotation search has been changed to be relative to the clipping region instead of the layer. This makes the local position more meaningful and reliable, but breaks code that directly performs annotation searches and uses the local position.
Official migration guideVerified classificationFrameworkSource Details