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;
}