showButton static method

dynamic showButton({
  1. bool forceInReleaseMode = false,
})

Implementation

static showButton({bool forceInReleaseMode = false}) {
  if (kReleaseMode && !forceInReleaseMode) return;

  if (NavigatorInstance.navigatorKey.currentState == null) return;

  Future.delayed(Duration.zero, () {
    try {
      final size = NavigatorInstance.navigatorKey.currentState?.context.size;
      final double width = size?.width ?? 200;
      final double height = size?.height ?? 250;

      _buttonOverlayOffset ??= Offset(width - 100, height - 100);

      _buttonOverlay ??= OverlayEntry(
        maintainState: true,
        opaque: false,
        builder: (context) {
          return Positioned(
              top: _buttonOverlayOffset!.dy,
              left: _buttonOverlayOffset!.dx,
              child: Draggable(
                onDragEnd: (DraggableDetails detail) =>
                    _buttonOverlayOffset = detail.offset,
                childWhenDragging: Container(),
                child: _floatButton,
                feedback: _floatButton,
              ));
        },
      );
      final overlay = NavigatorInstance.navigatorKey.currentState?.overlay;
      overlay?.insert(_buttonOverlay!);
    } catch (_) {}
  });
}