mainScreenWidget property
Widget
get
mainScreenWidget
Builds the layers of mainScreen
Implementation
Widget get mainScreenWidget {
Widget mainScreen = widget.mainScreen;
// Add layer - Shrink Screen
if (widget.shrinkMainScreen) {
final mainSize =
context.screenWidth - (widget.slideWidth * _animationValue);
mainScreen = SizedBox(
width: mainSize,
child: mainScreen,
);
}
// Add layer - Overlay color
if (widget.mainScreenOverlayColor != null) {
final overlayColor = ColorTween(
begin: widget.mainScreenOverlayColor!.withOpacity(0.0),
end: widget.mainScreenOverlayColor,
);
mainScreen = ColorFiltered(
colorFilter: ColorFilter.mode(
overlayColor.lerp(_animationValue)!,
widget.overlayBlend,
),
child: mainScreen,
);
}
// Add layer - Border radius
if (widget.borderRadius != 0) {
final borderRadius = widget.borderRadius * _animationValue;
mainScreen = ClipRRect(
borderRadius: BorderRadius.circular(borderRadius),
child: mainScreen,
);
}
// Add layer - Box shadow
if (widget.boxShadow != null) {
final radius = widget.borderRadius * _animationValue;
mainScreen = Container(
margin: EdgeInsets.all(8.0 * _animationValue),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(radius),
boxShadow: widget.boxShadow ??
[
BoxShadow(
color: Colors.black.withOpacity(0.5),
blurRadius: 5,
)
],
),
child: mainScreen,
);
}
// Add layer - Angle
if (widget.angle != 0 && widget.style != DrawerStyle.defaultStyle) {
final rotationAngle =
(((widget.angle) * pi * _slideDirection) / 180) * _animationValue;
mainScreen = Transform.rotate(
angle: rotationAngle,
alignment: widget.isRtl
? AlignmentDirectional.topEnd
: AlignmentDirectional.topStart,
child: mainScreen,
);
}
// Add layer - Overlay blur
if (widget.overlayBlur != null) {
final blurAmount = widget.overlayBlur! * _animationValue;
mainScreen = ImageFiltered(
imageFilter: ImageFilter.blur(
sigmaX: blurAmount,
sigmaY: blurAmount,
),
child: mainScreen,
);
}
// Add layer - AbsorbPointer
/// Prevents touches to mainScreen while drawer is open
if (widget.mainScreenAbsorbPointer) {
mainScreen = Stack(
children: [
mainScreen,
ValueListenableBuilder(
valueListenable: _absorbingMainScreen,
builder: (_, bool valueNotifier, ___) {
if (valueNotifier && stateNotifier.value == DrawerState.open) {
return AbsorbPointer(
child: Container(
color: Colors.transparent,
width: context.screenWidth,
height: context.screenHeight,
),
);
}
return const SizedBox.shrink();
},
),
],
);
}
// Add layer - GestureDetector
if (widget.mainScreenTapClose) {
mainScreen = GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: _mainScreenTapHandler,
child: mainScreen,
);
}
return mainScreen;
}