Unverified Commit 4becae25 authored by Michael Goderbauer's avatar Michael Goderbauer Committed by GitHub

Revert "Add `SingleChildScrollView` for `NavigationRail`" (#143097)

Reverts flutter/flutter#137415

Reverting due to https://github.com/flutter/flutter/issues/143061. this is breaking some existing use cases, see also https://github.com/flutter/samples/pull/2157. If we try this again, we need to add this in less breaking way.

Fixes https://github.com/flutter/flutter/issues/143061
parent 120a01cc
...@@ -439,41 +439,39 @@ class _NavigationRailState extends State<NavigationRail> with TickerProviderStat ...@@ -439,41 +439,39 @@ class _NavigationRailState extends State<NavigationRail> with TickerProviderStat
Expanded( Expanded(
child: Align( child: Align(
alignment: Alignment(0, groupAlignment), alignment: Alignment(0, groupAlignment),
child: SingleChildScrollView( child: Column(
child: Column( mainAxisSize: MainAxisSize.min,
mainAxisSize: MainAxisSize.min, children: <Widget>[
children: <Widget>[ for (int i = 0; i < widget.destinations.length; i += 1)
for (int i = 0; i < widget.destinations.length; i += 1) _RailDestination(
_RailDestination( minWidth: minWidth,
minWidth: minWidth, minExtendedWidth: minExtendedWidth,
minExtendedWidth: minExtendedWidth, extendedTransitionAnimation: _extendedAnimation,
extendedTransitionAnimation: _extendedAnimation, selected: widget.selectedIndex == i,
selected: widget.selectedIndex == i, icon: widget.selectedIndex == i ? widget.destinations[i].selectedIcon : widget.destinations[i].icon,
icon: widget.selectedIndex == i ? widget.destinations[i].selectedIcon : widget.destinations[i].icon, label: widget.destinations[i].label,
label: widget.destinations[i].label, destinationAnimation: _destinationAnimations[i],
destinationAnimation: _destinationAnimations[i], labelType: labelType,
labelType: labelType, iconTheme: widget.selectedIndex == i ? selectedIconTheme : effectiveUnselectedIconTheme,
iconTheme: widget.selectedIndex == i ? selectedIconTheme : effectiveUnselectedIconTheme, labelTextStyle: widget.selectedIndex == i ? selectedLabelTextStyle : unselectedLabelTextStyle,
labelTextStyle: widget.selectedIndex == i ? selectedLabelTextStyle : unselectedLabelTextStyle, padding: widget.destinations[i].padding,
padding: widget.destinations[i].padding, useIndicator: useIndicator,
useIndicator: useIndicator, indicatorColor: useIndicator ? indicatorColor : null,
indicatorColor: useIndicator ? indicatorColor : null, indicatorShape: useIndicator ? indicatorShape : null,
indicatorShape: useIndicator ? indicatorShape : null, onTap: () {
onTap: () { if (widget.onDestinationSelected != null) {
if (widget.onDestinationSelected != null) { widget.onDestinationSelected!(i);
widget.onDestinationSelected!(i); }
} },
}, indexLabel: localizations.tabLabel(
indexLabel: localizations.tabLabel( tabIndex: i + 1,
tabIndex: i + 1, tabCount: widget.destinations.length,
tabCount: widget.destinations.length,
),
disabled: widget.destinations[i].disabled,
), ),
if (widget.trailing != null) disabled: widget.destinations[i].disabled,
widget.trailing!, ),
], if (widget.trailing != null)
), widget.trailing!,
],
), ),
), ),
), ),
......
...@@ -3605,62 +3605,6 @@ void main() { ...@@ -3605,62 +3605,6 @@ void main() {
expect(inkFeatures, paints..circle(color: Colors.transparent)); expect(inkFeatures, paints..circle(color: Colors.transparent));
}, skip: kIsWeb && !isCanvasKit); // https://github.com/flutter/flutter/issues/99933 }, skip: kIsWeb && !isCanvasKit); // https://github.com/flutter/flutter/issues/99933
testWidgets('NavigationRail can scroll in low height', (WidgetTester tester) async {
// This is a regression test for https://github.com/flutter/flutter/issues/89167.
await tester.pumpWidget(
MaterialApp(
theme: ThemeData(
useMaterial3: true,
),
home: Builder(
builder: (BuildContext context) {
return MediaQuery(
// Set Screen height with 300
data: MediaQuery.of(context).copyWith(size: const Size(800, 300)),
child: Scaffold(
body: Row(
children: <Widget>[
// Set NavigationRail height with 100
SizedBox(
height: 100,
child: NavigationRail(
selectedIndex: 0,
destinations: const <NavigationRailDestination>[
NavigationRailDestination(
icon: Icon(Icons.favorite_border),
selectedIcon: Icon(Icons.favorite),
label: Text('Abc'),
),
NavigationRailDestination(
icon: Icon(Icons.bookmark_border),
selectedIcon: Icon(Icons.bookmark),
label: Text('Def'),
),
NavigationRailDestination(
icon: Icon(Icons.star_border),
selectedIcon: Icon(Icons.star),
label: Text('Ghi'),
),
],
),
),
const Expanded(
child: Text('body'),
),
],
),
),
);
},
),
),
);
final ScrollableState scrollable = tester.state(find.byType(Scrollable));
scrollable.position.jumpTo(500.0);
expect(scrollable.position.pixels, equals(500.0));
});
group('Material 2', () { group('Material 2', () {
// These tests are only relevant for Material 2. Once Material 2 // These tests are only relevant for Material 2. Once Material 2
// support is deprecated and the APIs are removed, these tests // support is deprecated and the APIs are removed, these tests
...@@ -5489,34 +5433,31 @@ TestSemantics _expectedSemantics() { ...@@ -5489,34 +5433,31 @@ TestSemantics _expectedSemantics() {
flags: <SemanticsFlag>[SemanticsFlag.scopesRoute], flags: <SemanticsFlag>[SemanticsFlag.scopesRoute],
children: <TestSemantics>[ children: <TestSemantics>[
TestSemantics( TestSemantics(
flags: <SemanticsFlag>[SemanticsFlag.hasImplicitScrolling], flags: <SemanticsFlag>[
children: <TestSemantics>[ SemanticsFlag.isSelected,
TestSemantics( SemanticsFlag.isFocusable,
flags: <SemanticsFlag>[SemanticsFlag.isSelected,
SemanticsFlag.isFocusable],
actions: <SemanticsAction>[SemanticsAction.tap],
label: 'Abc\nTab 1 of 4',
textDirection: TextDirection.ltr,
),
TestSemantics(
flags: <SemanticsFlag>[SemanticsFlag.isFocusable],
actions: <SemanticsAction>[SemanticsAction.tap],
label: 'Def\nTab 2 of 4',
textDirection: TextDirection.ltr,
),
TestSemantics(
flags: <SemanticsFlag>[SemanticsFlag.isFocusable],
actions: <SemanticsAction>[SemanticsAction.tap],
label: 'Ghi\nTab 3 of 4',
textDirection: TextDirection.ltr,
),
TestSemantics(
flags: <SemanticsFlag>[SemanticsFlag.isFocusable],
actions: <SemanticsAction>[SemanticsAction.tap],
label: 'Jkl\nTab 4 of 4',
textDirection: TextDirection.ltr,
),
], ],
actions: <SemanticsAction>[SemanticsAction.tap],
label: 'Abc\nTab 1 of 4',
textDirection: TextDirection.ltr,
),
TestSemantics(
flags: <SemanticsFlag>[SemanticsFlag.isFocusable],
actions: <SemanticsAction>[SemanticsAction.tap],
label: 'Def\nTab 2 of 4',
textDirection: TextDirection.ltr,
),
TestSemantics(
flags: <SemanticsFlag>[SemanticsFlag.isFocusable],
actions: <SemanticsAction>[SemanticsAction.tap],
label: 'Ghi\nTab 3 of 4',
textDirection: TextDirection.ltr,
),
TestSemantics(
flags: <SemanticsFlag>[SemanticsFlag.isFocusable],
actions: <SemanticsAction>[SemanticsAction.tap],
label: 'Jkl\nTab 4 of 4',
textDirection: TextDirection.ltr,
), ),
TestSemantics( TestSemantics(
label: 'body', label: 'body',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment