Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stable #119464

Closed
wants to merge 18 commits into from
Closed

Stable #119464

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
586225a
[flutter_tools] dont include material shaders in web builds (#116538)…
jonahwilliams Dec 6, 2022
e599f02
[flutter_releases] Flutter beta 3.7.0-1.1.pre Framework Cherrypicks (…
muditatandon Dec 7, 2022
84ea6a7
[CP] Fix Snackbar TalkBack regression (#116417) (#116608)
zanderso Dec 9, 2022
838467a
[CP] Bump Dartdoc version to 6.1.5 (#117014) (#117030)
gspencergoog Dec 14, 2022
9623d32
CPs: ci.yaml changes for packaging (#117196)
godofredoc Dec 16, 2022
e9be352
Zip api docs using the repo under test script. (#116437) (#117200)
godofredoc Dec 16, 2022
17dc0d4
Add a recursive flag to the zip command - currently it is zipping not…
godofredoc Dec 19, 2022
d74287b
[flutter_tools] Add remap sampler support (#116861) (#116922)
jonahwilliams Dec 19, 2022
e86981e
Fix scroll jump when NestedScrollPosition is inertia-cancelled. (#116…
Piinks Dec 19, 2022
13f24e5
Fix `NavigationRail` highlight (#117320) (#117344)
Piinks Dec 19, 2022
c29b09b
Update Engine revision to 8c99b0feaf9715af490612f00954c6a76374a907 fo…
itsjustkevin Dec 20, 2022
9738012
Fix `InkRipple` doesn't respect `rectCallback` when rendering ink cir…
Piinks Jan 4, 2023
9b4416a
Update Engine revision to 7b8906637ffd2b4cfde561f40a6f4eaab6bade13 fo…
itsjustkevin Jan 4, 2023
e8a06f0
[CP] Fix package:dwds async issue with already completed future (#118…
christopherfujino Jan 10, 2023
686fe91
[flutter_releases] Flutter beta 3.7.0-1.4.pre Framework Cherrypicks …
Jan 11, 2023
e144d8c
Fix copying/applying font fallback with package (#118393) (#118466)
IchordeDionysos Jan 17, 2023
099b3f4
Update Engine revision to 45c5586f2a9583d9511b742703529a92bf8f9db5 fo…
XilaiZhang Jan 21, 2023
b06b8b2
[flutter_releases] Update Engine revision to b24591ed328a2d4ce6505819…
Jan 24, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
97 changes: 88 additions & 9 deletions .ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4621,15 +4621,74 @@ targets:
["devicelab", "hostonly", "mac"]
task_name: flutter_tool_startup__macos

# TODO(drewroengoogle): Remove this target when the release scheduler is
# confirmed to be working correctly and as intended.
# (https://github.com/flutter/flutter/issues/100806)
# This target is marked `bringup: true` because this is a temporary target
# that is not intended to impact the tree.
- name: Linux docs_deploy_with_release_scheduler
- name: Linux flutter_packaging
recipe: packaging_v2/packaging_v2
timeout: 60
scheduler: release
bringup: true
enabled_branches:
- beta
- stable
- main
properties:
task_name: flutter_packaging
tags: >
["framework", "hostonly", "shard", "linux"]

- name: Mac flutter_packaging
recipe: packaging_v2/packaging_v2
timeout: 60
scheduler: release
bringup: true
enabled_branches:
- beta
- stable
- main
properties:
task_name: flutter_packaging
tags: >
["framework", "hostonly", "shard", "mac"]
dimensions:
cpu: "x86"

- name: Mac_arm64 flutter_packaging
recipe: packaging_v2/packaging_v2
timeout: 60
scheduler: release
bringup: true
enabled_branches:
- beta
- stable
- main
properties:
task_name: flutter_packaging
tags: >
["framework", "hostonly", "shard", "mac"]
dimensions:
cpu: "arm64"

- name: Windows flutter_packaging
recipe: packaging_v2/packaging_v2
timeout: 60
scheduler: release
bringup: true
enabled_branches:
- beta
- stable
- main
properties:
task_name: flutter_packaging
tags: >
["framework", "hostonly", "shard", "windows"]


- name: Linux docs_deploy_beta
recipe: flutter/flutter
scheduler: release
bringup: true
enabled_branches:
- beta
- main
presubmit: false
timeout: 60
properties:
Expand All @@ -4641,7 +4700,27 @@ targets:
]
tags: >
["framework", "hostonly", "linux"]
validation: docs
validation_name: Docs
validation: docs_deploy
validation_name: Docs_deploy
firebase_project: master-docs-flutter-dev
release_ref: refs/heads/master

- name: Linux docs_deploy_stable
recipe: flutter/flutter
scheduler: release
bringup: true
enabled_branches:
- stable
presubmit: false
timeout: 60
properties:
cores: "32"
dependencies: >-
[
{"dependency": "dashing", "version": "0.4.0"},
{"dependency": "firebase", "version": "v11.0.1"}
]
tags: >
["framework", "hostonly", "linux"]
validation: docs_deploy
validation_name: Docs_deploy
firebase_project: docs-flutter-dev
1 change: 1 addition & 0 deletions TESTOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -301,3 +301,4 @@
# skp_generator @Hixie
# test_ownership @keyonghan
# verify_binaries_codesigned @christopherfujino @flutter/releases
# flutter_packaging @godofredoc @flutter/infra
2 changes: 1 addition & 1 deletion bin/internal/engine.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ec5de9b810ef0cde91cece0a23ee8517fd40a880
b24591ed328a2d4ce6505819e2f5898a78132f7f
1 change: 1 addition & 0 deletions bin/internal/release-candidate-branch.version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
flutter-3.7-candidate.1
6 changes: 5 additions & 1 deletion dev/bots/docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function generate_docs() {
# Install and activate dartdoc.
# NOTE: When updating to a new dartdoc version, please also update
# `dartdoc_options.yaml` to include newly introduced error and warning types.
"$DART" pub global activate dartdoc 6.1.2
"$DART" pub global activate dartdoc 6.1.5

# Install and activate the snippets tool, which resides in the
# assets-for-api-docs repo:
Expand Down Expand Up @@ -148,3 +148,7 @@ if [[ -n "$LUCI_CI" && -z "$LUCI_PR" ]]; then
(cd "$FLUTTER_ROOT/dev/docs"; move_offline_into_place)
deploy_docs
fi

# Zip docs
cd "$FLUTTER_ROOT/dev/docs"
zip -r api_docs.zip doc
6 changes: 5 additions & 1 deletion packages/flutter/lib/src/material/ink_ripple.dart
Original file line number Diff line number Diff line change
Expand Up @@ -232,10 +232,14 @@ class InkRipple extends InteractiveInkFeature {
void paintFeature(Canvas canvas, Matrix4 transform) {
final int alpha = _fadeInController.isAnimating ? _fadeIn.value : _fadeOut.value;
final Paint paint = Paint()..color = color.withAlpha(alpha);
Rect? rect;
if (_clipCallback != null) {
rect = _clipCallback!();
}
// Splash moves to the center of the reference box.
final Offset center = Offset.lerp(
_position,
referenceBox.size.center(Offset.zero),
rect != null ? rect.center : referenceBox.size.center(Offset.zero),
Curves.ease.transform(_radiusController.value),
)!;
paintInkCircle(
Expand Down
43 changes: 28 additions & 15 deletions packages/flutter/lib/src/material/navigation_rail.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import 'text_theme.dart';
import 'theme.dart';

const double _kCircularIndicatorDiameter = 56;
const double _kIndicatorHeight = 32;

/// A Material Design widget that is meant to be displayed at the left or right of an
/// app to navigate between a small number of views, typically between three and
Expand Down Expand Up @@ -579,7 +580,8 @@ class _RailDestination extends StatelessWidget {
);

final bool material3 = Theme.of(context).useMaterial3;
final double indicatorInkOffsetY;
final EdgeInsets destionationPadding = (padding ?? EdgeInsets.zero).resolve(Directionality.of(context));
Offset indicatorOffset;

final Widget themedIcon = IconTheme(
data: iconTheme,
Expand All @@ -596,8 +598,10 @@ class _RailDestination extends StatelessWidget {
case NavigationRailLabelType.none:
// Split the destination spacing across the top and bottom to keep the icon centered.
final Widget? spacing = material3 ? const SizedBox(height: _verticalDestinationSpacingM3 / 2) : null;
indicatorInkOffsetY = _verticalDestinationPaddingNoLabel - (_verticalIconLabelSpacingM3 / 2);

indicatorOffset = Offset(
minWidth / 2 + destionationPadding.left,
_verticalDestinationSpacingM3 / 2 + destionationPadding.top,
);
final Widget iconPart = Column(
children: <Widget>[
if (spacing != null) spacing,
Expand Down Expand Up @@ -675,8 +679,12 @@ class _RailDestination extends StatelessWidget {
final Widget topSpacing = SizedBox(height: material3 ? 0 : verticalPadding);
final Widget labelSpacing = SizedBox(height: material3 ? lerpDouble(0, _verticalIconLabelSpacingM3, appearingAnimationValue)! : 0);
final Widget bottomSpacing = SizedBox(height: material3 ? _verticalDestinationSpacingM3 : verticalPadding);
indicatorInkOffsetY = _verticalDestinationPaddingWithLabel;

final double indicatorHorizontalPadding = (destionationPadding.left / 2) - (destionationPadding.right / 2);
final double indicatorVerticalPadding = destionationPadding.top;
indicatorOffset = Offset(minWidth / 2 + indicatorHorizontalPadding, indicatorVerticalPadding);
if (minWidth < _NavigationRailDefaultsM2(context).minWidth!) {
indicatorOffset = Offset(minWidth / 2 + _horizontalDestinationSpacingM3, indicatorVerticalPadding);
}
content = Container(
constraints: BoxConstraints(
minWidth: minWidth,
Expand Down Expand Up @@ -719,7 +727,12 @@ class _RailDestination extends StatelessWidget {
final Widget topSpacing = SizedBox(height: material3 ? 0 : _verticalDestinationPaddingWithLabel);
final Widget labelSpacing = SizedBox(height: material3 ? _verticalIconLabelSpacingM3 : 0);
final Widget bottomSpacing = SizedBox(height: material3 ? _verticalDestinationSpacingM3 : _verticalDestinationPaddingWithLabel);
indicatorInkOffsetY = _verticalDestinationPaddingWithLabel;
final double indicatorHorizontalPadding = (destionationPadding.left / 2) - (destionationPadding.right / 2);
final double indicatorVerticalPadding = destionationPadding.top;
indicatorOffset = Offset(minWidth / 2 + indicatorHorizontalPadding, indicatorVerticalPadding);
if (minWidth < _NavigationRailDefaultsM2(context).minWidth!) {
indicatorOffset = Offset(minWidth / 2 + _horizontalDestinationSpacingM3, indicatorVerticalPadding);
}
content = Container(
constraints: BoxConstraints(
minWidth: minWidth,
Expand Down Expand Up @@ -761,7 +774,7 @@ class _RailDestination extends StatelessWidget {
splashColor: colors.primary.withOpacity(0.12),
hoverColor: colors.primary.withOpacity(0.04),
useMaterial3: material3,
indicatorOffsetY: indicatorInkOffsetY,
indicatorOffset: indicatorOffset,
child: content,
),
),
Expand All @@ -783,7 +796,7 @@ class _IndicatorInkWell extends InkResponse {
super.splashColor,
super.hoverColor,
required this.useMaterial3,
required this.indicatorOffsetY,
required this.indicatorOffset,
}) : super(
containedInkWell: true,
highlightShape: BoxShape.rectangle,
Expand All @@ -792,18 +805,17 @@ class _IndicatorInkWell extends InkResponse {
);

final bool useMaterial3;
final double indicatorOffsetY;
final Offset indicatorOffset;

@override
RectCallback? getRectCallback(RenderBox referenceBox) {
final double indicatorOffsetX = referenceBox.size.width / 2;

if (useMaterial3) {
return () {
return Rect.fromCenter(
center: Offset(indicatorOffsetX, indicatorOffsetY),
width: _kCircularIndicatorDiameter,
height: 32,
return Rect.fromLTWH(
indicatorOffset.dx - (_kCircularIndicatorDiameter / 2),
indicatorOffset.dy,
_kCircularIndicatorDiameter,
_kIndicatorHeight,
);
};
}
Expand Down Expand Up @@ -965,6 +977,7 @@ const double _verticalDestinationPaddingWithLabel = 16.0;
const Widget _verticalSpacer = SizedBox(height: 8.0);
const double _verticalIconLabelSpacingM3 = 4.0;
const double _verticalDestinationSpacingM3 = 12.0;
const double _horizontalDestinationSpacingM3 = 12.0;

// Hand coded defaults based on Material Design 2.
class _NavigationRailDefaultsM2 extends NavigationRailThemeData {
Expand Down
6 changes: 2 additions & 4 deletions packages/flutter/lib/src/material/snack_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -628,9 +628,7 @@ class _SnackBarState extends State<SnackBar> {

Widget snackBar = Padding(
padding: padding,
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
child: Wrap(
children: <Widget>[
Row(
children: <Widget>[
Expand All @@ -656,7 +654,7 @@ class _SnackBarState extends State<SnackBar> {
children: maybeActionAndIcon),
),
],
),

),
);

Expand Down
4 changes: 2 additions & 2 deletions packages/flutter/lib/src/painting/text_style.dart
Original file line number Diff line number Diff line change
Expand Up @@ -895,7 +895,7 @@ class TextStyle with Diagnosticable {
decorationThickness: decorationThickness ?? this.decorationThickness,
debugLabel: newDebugLabel,
fontFamily: fontFamily ?? _fontFamily,
fontFamilyFallback: fontFamilyFallback ?? this.fontFamilyFallback,
fontFamilyFallback: fontFamilyFallback ?? _fontFamilyFallback,
package: package ?? _package,
overflow: overflow ?? this.overflow,
);
Expand Down Expand Up @@ -989,7 +989,7 @@ class TextStyle with Diagnosticable {
color: foreground == null ? color ?? this.color : null,
backgroundColor: background == null ? backgroundColor ?? this.backgroundColor : null,
fontFamily: fontFamily ?? _fontFamily,
fontFamilyFallback: fontFamilyFallback ?? this.fontFamilyFallback,
fontFamilyFallback: fontFamilyFallback ?? _fontFamilyFallback,
fontSize: fontSize == null ? null : fontSize! * fontSizeFactor + fontSizeDelta,
fontWeight: fontWeight == null ? null : FontWeight.values[(fontWeight!.index + fontWeightDelta).clamp(0, FontWeight.values.length - 1)], // ignore_clamp_double_lint
fontStyle: fontStyle ?? this.fontStyle,
Expand Down
5 changes: 4 additions & 1 deletion packages/flutter/lib/src/widgets/nested_scroll_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -903,7 +903,10 @@ class _NestedScrollCoordinator implements ScrollActivityDelegate, ScrollHoldCont
// If an update is made to pointer scrolling here, consider if the same
// (or similar) change should be made in
// ScrollPositionWithSingleContext.pointerScroll.
assert(delta != 0.0);
if (delta == 0.0) {
goBallistic(0.0);
return;
}

goIdle();
updateUserScrollDirection(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,10 @@ class ScrollPositionWithSingleContext extends ScrollPosition implements ScrollAc
// If an update is made to pointer scrolling here, consider if the same
// (or similar) change should be made in
// _NestedScrollCoordinator.pointerScroll.
assert(delta != 0.0);
if (delta == 0.0) {
goBallistic(0.0);
return;
}

final double targetPixels =
math.min(math.max(pixels + delta, minScrollExtent), maxScrollExtent);
Expand Down
2 changes: 1 addition & 1 deletion packages/flutter/lib/src/widgets/scrollable.dart
Original file line number Diff line number Diff line change
Expand Up @@ -780,7 +780,7 @@ class ScrollableState extends State<Scrollable> with TickerProviderStateMixin, R
GestureBinding.instance.pointerSignalResolver.register(event, _handlePointerScroll);
}
} else if (event is PointerScrollInertiaCancelEvent) {
position.jumpTo(position.pixels);
position.pointerScroll(0);
// Don't use the pointer signal resolver, all hit-tested scrollables should stop.
}
}
Expand Down
21 changes: 2 additions & 19 deletions packages/flutter/test/material/debug_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -316,24 +316,7 @@ void main() {
' TextButtonTheme\n'
' Padding\n'
' Row\n'
' Column\n'
' _SingleChildViewport\n'
' IgnorePointer-[GlobalKey#d48e8]\n'
' Semantics\n'
' Listener\n'
' _GestureSemantics\n'
' RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#0c3e0]\n'
' Listener\n'
' _ScrollableScope\n'
' _ScrollSemantics-[GlobalKey#349b8]\n'
' NotificationListener<ScrollMetricsNotification>\n'
' RepaintBoundary\n'
' CustomPaint\n'
' RepaintBoundary\n'
' NotificationListener<ScrollNotification>\n'
' GlowingOverscrollIndicator\n'
' Scrollable\n'
' SingleChildScrollView\n'
' Wrap\n'
' Padding\n'
' MediaQuery\n'
' Padding\n'
Expand Down Expand Up @@ -395,7 +378,7 @@ void main() {
' Directionality\n'
' [root]\n'
' Typically, the ScaffoldMessenger widget is introduced by the\n'
' MaterialApp at the top of your application widget tree.\n',
' MaterialApp at the top of your application widget tree.\n'
));
});
}