Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
d186e34
replaced BottomNavigationBar with NavigationBar
fmt-Println-MKO Apr 17, 2023
8d95eb6
fixed test to pass new NavigationBar design
fmt-Println-MKO Apr 17, 2023
29020c0
updated version to 0.1.4
fmt-Println-MKO Apr 17, 2023
1fe63ce
fixed formating
fmt-Println-MKO Apr 17, 2023
8be3ea6
fixed example test
fmt-Println-MKO Apr 17, 2023
f7f8d3f
fixed formatting in example unit test
fmt-Println-MKO Apr 17, 2023
7584b58
fixed formatting in example unit test
fmt-Println-MKO Apr 17, 2023
7891c11
Merge branch 'main' into main
fmt-Println-MKO Apr 17, 2023
90efd53
Merge branch 'main' into main
fmt-Println-MKO Apr 23, 2023
8f72413
Merge branch 'main' into main
fmt-Println-MKO May 6, 2023
9249a60
fixed new line at end of file
fmt-Println-MKO May 6, 2023
385690d
fixed, use iconSize property for NavigationBar
fmt-Println-MKO May 6, 2023
8d69ac3
fixed formating
fmt-Println-MKO May 6, 2023
19e37bd
Merge branch 'main' into main
fmt-Println-MKO May 9, 2023
d7245c8
fixed NavBarThemeData as base for new iconSize
fmt-Println-MKO May 9, 2023
591ce3f
fixed, added BuildContext type
fmt-Println-MKO May 9, 2023
456c326
Merge branch 'main' into main
fmt-Println-MKO May 9, 2023
876363f
Merge branch 'main' into main
fmt-Println-MKO May 11, 2023
e28664b
Merge branch 'main' into main
fmt-Println-MKO May 12, 2023
35a1361
Update packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart
fmt-Println-MKO May 16, 2023
3099c95
Merge branch 'main' into main
fmt-Println-MKO May 16, 2023
bc45bd2
Merge branch 'main' into main
fmt-Println-MKO May 17, 2023
d404401
fixed formatting
fmt-Println-MKO May 17, 2023
5174e24
Merge branch 'main' into main
fmt-Println-MKO May 17, 2023
747ae4e
Merge branch 'main' into main
fmt-Println-MKO May 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fixed, use iconSize property for NavigationBar
  • Loading branch information
fmt-Println-MKO committed May 6, 2023
commit 385690d461c04574908425883d42064e78624f4e
187 changes: 83 additions & 104 deletions packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart
Original file line number Diff line number Diff line change
Expand Up @@ -317,11 +317,17 @@ class AdaptiveScaffold extends StatefulWidget {
}) {
return Builder(
builder: (_) {
return NavigationBar(
selectedIndex: currentIndex ?? 0,
destinations: destinations,
onDestinationSelected: onDestinationSelected,
);
return NavigationBarTheme(
data: NavigationBarThemeData(
iconTheme: MaterialStateProperty.resolveWith((Set<MaterialState> states) {
return IconThemeData(size: iconSize);
}),
),
child: NavigationBar(
selectedIndex: currentIndex ?? 0,
destinations: destinations,
onDestinationSelected: onDestinationSelected,
));
},
);
}
Expand Down Expand Up @@ -373,8 +379,7 @@ class AdaptiveScaffold extends StatefulWidget {
child: _BrickLayout(
columns: itemColumns,
columnSpacing: kMaterialGutterValue,
itemPadding:
const EdgeInsets.only(bottom: kMaterialGutterValue),
itemPadding: const EdgeInsets.only(bottom: kMaterialGutterValue),
children: thisWidgets,
),
),
Expand Down Expand Up @@ -473,25 +478,20 @@ class AdaptiveScaffold extends StatefulWidget {
class _AdaptiveScaffoldState extends State<AdaptiveScaffold> {
@override
Widget build(BuildContext context) {
final NavigationRailThemeData navRailTheme =
Theme.of(context).navigationRailTheme;
final NavigationRailThemeData navRailTheme = Theme.of(context).navigationRailTheme;

return Directionality(
textDirection: TextDirection.ltr,
child: Scaffold(
appBar: widget.drawerBreakpoint.isActive(context) && widget.useDrawer
? widget.appBar ?? AppBar()
: null,
appBar: widget.drawerBreakpoint.isActive(context) && widget.useDrawer ? widget.appBar ?? AppBar() : null,
drawer: widget.drawerBreakpoint.isActive(context) && widget.useDrawer
? Drawer(
child: NavigationRail(
extended: true,
leading: widget.leadingExtendedNavRail,
trailing: widget.trailingNavRail,
selectedIndex: widget.selectedIndex,
destinations: widget.destinations
.map((_) => AdaptiveScaffold.toRailDestination(_))
.toList(),
destinations: widget.destinations.map((_) => AdaptiveScaffold.toRailDestination(_)).toList(),
onDestinationSelected: widget.onSelectedIndexChange,
),
)
Expand All @@ -509,16 +509,13 @@ class _AdaptiveScaffoldState extends State<AdaptiveScaffold> {
leading: widget.leadingUnextendedNavRail,
trailing: widget.trailingNavRail,
selectedIndex: widget.selectedIndex,
destinations: widget.destinations
.map((_) => AdaptiveScaffold.toRailDestination(_))
.toList(),
destinations: widget.destinations.map((_) => AdaptiveScaffold.toRailDestination(_)).toList(),
onDestinationSelected: widget.onSelectedIndexChange,
backgroundColor: navRailTheme.backgroundColor,
selectedIconTheme: navRailTheme.selectedIconTheme,
unselectedIconTheme: navRailTheme.unselectedIconTheme,
selectedLabelTextStyle: navRailTheme.selectedLabelTextStyle,
unSelectedLabelTextStyle:
navRailTheme.unselectedLabelTextStyle,
unSelectedLabelTextStyle: navRailTheme.unselectedLabelTextStyle,
),
),
widget.largeBreakpoint: SlotLayout.from(
Expand All @@ -529,36 +526,31 @@ class _AdaptiveScaffoldState extends State<AdaptiveScaffold> {
leading: widget.leadingExtendedNavRail,
trailing: widget.trailingNavRail,
selectedIndex: widget.selectedIndex,
destinations: widget.destinations
.map((_) => AdaptiveScaffold.toRailDestination(_))
.toList(),
destinations: widget.destinations.map((_) => AdaptiveScaffold.toRailDestination(_)).toList(),
onDestinationSelected: widget.onSelectedIndexChange,
backgroundColor: navRailTheme.backgroundColor,
selectedIconTheme: navRailTheme.selectedIconTheme,
unselectedIconTheme: navRailTheme.unselectedIconTheme,
selectedLabelTextStyle: navRailTheme.selectedLabelTextStyle,
unSelectedLabelTextStyle:
navRailTheme.unselectedLabelTextStyle,
unSelectedLabelTextStyle: navRailTheme.unselectedLabelTextStyle,
),
),
},
),
bottomNavigation:
!widget.drawerBreakpoint.isActive(context) || !widget.useDrawer
? SlotLayout(
config: <Breakpoint, SlotLayoutConfig>{
widget.smallBreakpoint: SlotLayout.from(
key: const Key('bottomNavigation'),
builder: (_) =>
AdaptiveScaffold.standardBottomNavigationBar(
currentIndex: widget.selectedIndex,
destinations: widget.destinations,
onDestinationSelected: widget.onSelectedIndexChange,
),
),
},
)
: null,
bottomNavigation: !widget.drawerBreakpoint.isActive(context) || !widget.useDrawer
? SlotLayout(
config: <Breakpoint, SlotLayoutConfig>{
widget.smallBreakpoint: SlotLayout.from(
key: const Key('bottomNavigation'),
builder: (_) => AdaptiveScaffold.standardBottomNavigationBar(
currentIndex: widget.selectedIndex,
destinations: widget.destinations,
onDestinationSelected: widget.onSelectedIndexChange,
),
),
},
)
: null,
body: SlotLayout(
config: <Breakpoint, SlotLayoutConfig?>{
Breakpoints.standard: SlotLayout.from(
Expand All @@ -568,35 +560,32 @@ class _AdaptiveScaffoldState extends State<AdaptiveScaffold> {
builder: widget.body,
),
if (widget.smallBody != null)
widget.smallBreakpoint:
(widget.smallBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('smallBody'),
inAnimation: AdaptiveScaffold.fadeIn,
outAnimation: AdaptiveScaffold.fadeOut,
builder: widget.smallBody,
)
: null,
widget.smallBreakpoint: (widget.smallBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('smallBody'),
inAnimation: AdaptiveScaffold.fadeIn,
outAnimation: AdaptiveScaffold.fadeOut,
builder: widget.smallBody,
)
: null,
if (widget.body != null)
widget.mediumBreakpoint:
(widget.body != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('body'),
inAnimation: AdaptiveScaffold.fadeIn,
outAnimation: AdaptiveScaffold.fadeOut,
builder: widget.body,
)
: null,
widget.mediumBreakpoint: (widget.body != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('body'),
inAnimation: AdaptiveScaffold.fadeIn,
outAnimation: AdaptiveScaffold.fadeOut,
builder: widget.body,
)
: null,
if (widget.largeBody != null)
widget.largeBreakpoint:
(widget.largeBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('largeBody'),
inAnimation: AdaptiveScaffold.fadeIn,
outAnimation: AdaptiveScaffold.fadeOut,
builder: widget.largeBody,
)
: null,
widget.largeBreakpoint: (widget.largeBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('largeBody'),
inAnimation: AdaptiveScaffold.fadeIn,
outAnimation: AdaptiveScaffold.fadeOut,
builder: widget.largeBody,
)
: null,
},
),
secondaryBody: SlotLayout(
Expand All @@ -607,32 +596,29 @@ class _AdaptiveScaffoldState extends State<AdaptiveScaffold> {
builder: widget.secondaryBody,
),
if (widget.smallSecondaryBody != null)
widget.smallBreakpoint:
(widget.smallSecondaryBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('smallSBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
builder: widget.smallSecondaryBody,
)
: null,
widget.smallBreakpoint: (widget.smallSecondaryBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('smallSBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
builder: widget.smallSecondaryBody,
)
: null,
if (widget.secondaryBody != null)
widget.mediumBreakpoint:
(widget.secondaryBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('sBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
builder: widget.secondaryBody,
)
: null,
widget.mediumBreakpoint: (widget.secondaryBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('sBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
builder: widget.secondaryBody,
)
: null,
if (widget.largeSecondaryBody != null)
widget.largeBreakpoint:
(widget.largeSecondaryBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('largeSBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
builder: widget.largeSecondaryBody,
)
: null,
widget.largeBreakpoint: (widget.largeSecondaryBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('largeSBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
builder: widget.largeSecondaryBody,
)
: null,
},
),
),
Expand Down Expand Up @@ -693,17 +679,14 @@ class _BrickLayoutDelegate extends MultiChildLayoutDelegate {
@override
void performLayout(Size size) {
final BoxConstraints looseConstraints = BoxConstraints.loose(size);
final BoxConstraints fullWidthConstraints =
looseConstraints.tighten(width: size.width);
final BoxConstraints fullWidthConstraints = looseConstraints.tighten(width: size.width);

final List<Size> childSizes = <Size>[];
int childCount = 0;
// Count how many children we have.
for (; hasChild(childCount); childCount += 1) {}
final BoxConstraints itemConstraints = BoxConstraints(
maxWidth: fullWidthConstraints.maxWidth / columns -
columnSpacing / 2 -
itemPadding.horizontal,
maxWidth: fullWidthConstraints.maxWidth / columns - columnSpacing / 2 - itemPadding.horizontal,
);

for (int i = 0; i < childCount; i += 1) {
Expand All @@ -715,15 +698,12 @@ class _BrickLayoutDelegate extends MultiChildLayoutDelegate {
final double totalColumnSpacing = columnSpacing * (columns - 1);
final double columnWidth = (size.width - totalColumnSpacing) / columns;
final double topPadding = itemPadding.resolve(TextDirection.ltr).top;
final List<double> columnUsage =
List<double>.generate(columns, (int index) => topPadding);
final List<double> columnUsage = List<double>.generate(columns, (int index) => topPadding);
for (final Size childSize in childSizes) {
positionChild(
childId,
Offset(
columnSpacing * columnIndex +
columnWidth * columnIndex +
(columnWidth - childSize.width) / 2,
columnSpacing * columnIndex + columnWidth * columnIndex + (columnWidth - childSize.width) / 2,
columnUsage[columnIndex],
),
);
Expand All @@ -735,7 +715,6 @@ class _BrickLayoutDelegate extends MultiChildLayoutDelegate {

@override
bool shouldRelayout(_BrickLayoutDelegate oldDelegate) {
return itemPadding != oldDelegate.itemPadding ||
columnSpacing != oldDelegate.columnSpacing;
return itemPadding != oldDelegate.itemPadding || columnSpacing != oldDelegate.columnSpacing;
}
}