| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | import 'package:flutter/rendering.dart';import 'package:flutter/widgets.dart';class PopoverCompositedTransformFollower extends CompositedTransformFollower {  const PopoverCompositedTransformFollower({    super.key,    required super.link,    super.showWhenUnlinked = true,    super.offset = Offset.zero,    super.targetAnchor = Alignment.topLeft,    super.followerAnchor = Alignment.topLeft,    super.child,  });  @override  PopoverRenderFollowerLayer createRenderObject(BuildContext context) {    final screenSize = MediaQuery.of(context).size;    return PopoverRenderFollowerLayer(      screenSize: screenSize,      link: link,      showWhenUnlinked: showWhenUnlinked,      offset: offset,      leaderAnchor: targetAnchor,      followerAnchor: followerAnchor,    );  }  @override  void updateRenderObject(      BuildContext context, PopoverRenderFollowerLayer renderObject) {    final screenSize = MediaQuery.of(context).size;    renderObject      ..screenSize = screenSize      ..link = link      ..showWhenUnlinked = showWhenUnlinked      ..offset = offset      ..leaderAnchor = targetAnchor      ..followerAnchor = followerAnchor;  }}class PopoverRenderFollowerLayer extends RenderFollowerLayer {  Size screenSize;  PopoverRenderFollowerLayer({    required super.link,    super.showWhenUnlinked = true,    super.offset = Offset.zero,    super.leaderAnchor = Alignment.topLeft,    super.followerAnchor = Alignment.topLeft,    super.child,    required this.screenSize,  });  @override  void paint(PaintingContext context, Offset offset) {    super.paint(context, offset);    if (link.leader == null) {      return;    }    if (link.leader!.offset.dx + link.leaderSize!.width + size.width >        screenSize.width) {      debugPrint("over flow");    }    debugPrint(        "right: ${link.leader!.offset.dx + link.leaderSize!.width + size.width}, screen with: ${screenSize.width}");  }}class EdgeFollowerLayer extends FollowerLayer {  EdgeFollowerLayer({    required super.link,    super.showWhenUnlinked = true,    super.unlinkedOffset = Offset.zero,    super.linkedOffset = Offset.zero,  });}
 |