-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Open
Labels
P3Issues that are less important to the Flutter projectIssues that are less important to the Flutter projectc: API breakBackwards-incompatible API changesBackwards-incompatible API changesframeworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.team-frameworkOwned by Framework teamOwned by Framework teamtriaged-frameworkTriaged by Framework teamTriaged by Framework team
Description
This bug lists changes we'll probably never make, but should consider if we ever for some reason decided to start over in a new universe.
Foundation
-
ChangeNotifierandListenableand company are a bit mixed up. We could refactor the code here so that we more clearly have aListenableand aListenableController, and aValueListenableand aValueListenableController, and so on.
Services
-
StandardMessageCodecshould be a static class or should be stateful. -
dev.flutter/channel-bufferscontrol messages should use a more efficient binary format rather than an inefficient bespoke\r-delimited text-based format. -
flutter/system,flutter/navigation, etc, control messages should use a more efficient binary format rather than JSON.
Painting
-
addListener/removeListeneronImageStreamhave a broken API that should be redesigned. -
NotchedShapeshould be a shape, or should have another name. -
TextStylehas many decoration properties, it would be nice if they were all in one object, maybe separate objects for underline and overline and strike-through.
Gestures
- Rename
PointerMoveEventtoPointerUpdateEvent, because it's also triggered at button changes without moves.
Animation
-
Tweens should be immutable. - Consider renaming
vsyncin AnimationController totickerProvider(Roll engine c41bbc63d955cc7056a162957ac4eeeca6647dc2..e77e4f0e051cb53754814ffe33df291a551bdba3 (5 commits) #37255) - Instead of one
AnimationController, have one for each type of controller (bounded, unbounded, simulation, repeating, etc). - Remove
Animatable.animatein favour ofAnimation.drive. -
CurveTweenconstructor's argument should be positional. (Make CurveTween curve a regular parameter #21433)
Rendering
-
Adaptor->Adapter - SliverChildListDelegate should have a
childrenargument instead of a positional one -
CustomPainter.hitTestshould take aSizeargument (CustomPainter.hitTest missing size argument #28206) -
Layer.pushLayershould be renamed towithLayer, since it is not matched by apopLayer. The same applies to its relatives. -
BlendMode.srcATop->BlendMode.srcAtop -
BlendMode.dstATop->BlendMode.dstAtop
Widgets
- TabController should be a ValueListenable
- Rename
WidgetBuilderto make it clear it's a typedef. - Rename
TransitionBuilderto make it clear it's a typedef with a child. - Rename
AnimatedBuilderto make it clear it takes anyListenable(evenAnimationBuilderwould be more consistent...), see also: Breaking changes that would improve the overall API #24722 (comment). - Rename
Listenerto bePointerListener - (Subclasses of)
AnimatedWidgetandImplicitlyAnimatedWidgetshould be named consistently (see Breaking changes that would improve the overall API #24722 (comment)). - Name the Foo vs FooTransition vs AnimatedFoo widgets more consistently (e.g. FadeTransition vs AnimatedOpacity, also
AnimatedSize). - Consider merging all the one-argument
FooBuildertypedefs into one generic typedef, or otherwise cleaning up the inconsistencies there. -
inheritFromWidgetOfExactTypeshould be generic rather than taking aType(so it can guarantee its return type is of the same type as the argument). -
Container's width and height properties should size the child, and imply an alignment. - It's weird that we have both
showDialogandshowGeneralDialog. -
AnimatedListshould beAnimatedListView. -
SliverMultiBoxAdaptorWidgetis not an adaptor; consider naming likeSliverMultiChildRenderObjectWidget. - Rename
RichTexttoRawText. - Change the type of
maxLinesfrom int to double (TextField maxLines should be a double, not an int. #35064). -
ColorFiltered->ColorFilter - Be consistent about callback parameter names for tapping/pressing something (onTap vs onPressed, Be consistent about callback parameter names for tapping/pressing something #17407)
-
FocusNodeandFocusScopeNodeshould use 'focusable' instead of 'canRequestFocus' as the attribute for controlling focusability. - MediaQueryData.disableAnimations should be called MediaQueryData.enableAnimations with the opposite semantics (see style guide under "double negatives").
- MediaQuery.viewPadding should be used instead of MediaQuery.padding throughout the framework. viewPadding was added ATF to address edge cases, but the API surface has become confusing as a result, see SafeArea.maintainBottomViewPadding should be true by default #59204
-
Element.activateshould rename toElement.reactivate, because only the reactivate will callback. -
OnInvokeCallbackshould be called justInvokeCallbackper the style guide. - Navigator:
reportsRouteUpdateToEngineshould bereportRouteUpdateToEngine(imperative not descriptive). - Better property's naming for Form widget (autoValidateMode, instead of autovalidateMode) #115820
Material
- ColorScheme.on* shouldn't look like event handlers
- Handle the tap target padding for e.g. mini fabs more intuitively (dunno what that would entail exactly)
-
InputDecoration.filledshould beisFilled -
InputDecorationshould only have one prefix field and one suffix field, rather than three each (widget, icon, text). And it probably should have anerror, alabel, and ahintinstead of justerrorText,labelText, andhintText. - Change
DividerandVerticalDivider'sindentandendIndentproperties to simply bemargin -
Colors.grey->Colors.gray
PiN73, JonasWanke, mirkancal, TimWhiting, pedromassango and 29 moreJuliotati
Metadata
Metadata
Assignees
Labels
P3Issues that are less important to the Flutter projectIssues that are less important to the Flutter projectc: API breakBackwards-incompatible API changesBackwards-incompatible API changesframeworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.team-frameworkOwned by Framework teamOwned by Framework teamtriaged-frameworkTriaged by Framework teamTriaged by Framework team