Skip to content
Closed
Changes from all commits
Commits
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
309 changes: 153 additions & 156 deletions packages/flutter_adaptive_scaffold/lib/src/adaptive_scaffold.dart
Original file line number Diff line number Diff line change
Expand Up @@ -477,165 +477,162 @@ class _AdaptiveScaffoldState extends State<AdaptiveScaffold> {
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,
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(),
onDestinationSelected: widget.onSelectedIndexChange,
),
)
: null,
body: AdaptiveLayout(
bodyOrientation: widget.bodyOrientation,
bodyRatio: widget.bodyRatio,
internalAnimations: widget.internalAnimations,
primaryNavigation: SlotLayout(
config: <Breakpoint, SlotLayoutConfig>{
widget.mediumBreakpoint: SlotLayout.from(
key: const Key('primaryNavigation'),
builder: (_) => AdaptiveScaffold.standardNavigationRail(
width: widget.navigationRailWidth,
leading: widget.leadingUnextendedNavRail,
trailing: widget.trailingNavRail,
selectedIndex: widget.selectedIndex,
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,
),
return Scaffold(
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(),
onDestinationSelected: widget.onSelectedIndexChange,
),
widget.largeBreakpoint: SlotLayout.from(
key: const Key('primaryNavigation1'),
builder: (_) => AdaptiveScaffold.standardNavigationRail(
width: widget.extendedNavigationRailWidth,
extended: true,
leading: widget.leadingExtendedNavRail,
trailing: widget.trailingNavRail,
selectedIndex: widget.selectedIndex,
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,
),
)
: null,
body: AdaptiveLayout(
bodyOrientation: widget.bodyOrientation,
bodyRatio: widget.bodyRatio,
internalAnimations: widget.internalAnimations,
primaryNavigation: SlotLayout(
config: <Breakpoint, SlotLayoutConfig>{
widget.mediumBreakpoint: SlotLayout.from(
key: const Key('primaryNavigation'),
builder: (_) => AdaptiveScaffold.standardNavigationRail(
width: widget.navigationRailWidth,
leading: widget.leadingUnextendedNavRail,
trailing: widget.trailingNavRail,
selectedIndex: widget.selectedIndex,
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,
),
},
),
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(
key: const Key('body'),
inAnimation: AdaptiveScaffold.fadeIn,
outAnimation: AdaptiveScaffold.fadeOut,
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,
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,
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,
},
),
secondaryBody: SlotLayout(
config: <Breakpoint, SlotLayoutConfig?>{
Breakpoints.standard: SlotLayout.from(
key: const Key('sBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
builder: widget.secondaryBody,
),
widget.largeBreakpoint: SlotLayout.from(
key: const Key('primaryNavigation1'),
builder: (_) => AdaptiveScaffold.standardNavigationRail(
width: widget.extendedNavigationRailWidth,
extended: true,
leading: widget.leadingExtendedNavRail,
trailing: widget.trailingNavRail,
selectedIndex: widget.selectedIndex,
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,
),
if (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,
if (widget.largeSecondaryBody != null)
widget.largeBreakpoint:
(widget.largeSecondaryBody != AdaptiveScaffold.emptyBuilder)
? SlotLayout.from(
key: const Key('largeSBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
builder: widget.largeSecondaryBody,
)
: 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(
key: const Key('body'),
inAnimation: AdaptiveScaffold.fadeIn,
outAnimation: AdaptiveScaffold.fadeOut,
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,
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,
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,
},
),
secondaryBody: SlotLayout(
config: <Breakpoint, SlotLayoutConfig?>{
Breakpoints.standard: SlotLayout.from(
key: const Key('sBody'),
outAnimation: AdaptiveScaffold.stayOnScreen,
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,
if (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,
},
),
),
);
Expand Down