I want to show suggestion when cursor is on button or on some widget in flutter web
I share example how I want to show suggestion box but I don't know how to add suggestion box in flutter
CodePudding user response:
Try below code hope its help to you. Used Tooltip Widget
CodePudding user response:
You need to wrap widget with Tooltip see example.
super_tooltip: ^1.0.1
https://pub.dev/packages/super_tooltip
class TargetWidget extends StatefulWidget {
const TargetWidget({Key? key}) : super(key: key);
@override
_TargetWidgetState createState() => new _TargetWidgetState();
}
class _TargetWidgetState extends State<TargetWidget> {
SuperTooltip? tooltip;
Future<bool> _willPopCallback() async {
// If the tooltip is open we don't pop the page on a backbutton press
// but close the ToolTip
if (tooltip!.isOpen) {
tooltip!.close();
return false;
}
return true;
}
void onTap() {
if (tooltip != null && tooltip!.isOpen) {
tooltip!.close();
return;
}
var renderBox = context.findRenderObject() as RenderBox;
final overlay = Overlay.of(context)!.context.findRenderObject() as RenderBox?;
var targetGlobalCenter = renderBox
.localToGlobal(renderBox.size.center(Offset.zero), ancestor: overlay);
// We create the tooltip on the first use
tooltip = SuperTooltip(
popupDirection: TooltipDirection.left,
arrowTipDistance: 15.0,
arrowBaseWidth: 40.0,
arrowLength: 40.0,
borderColor: Colors.green,
borderWidth: 5.0,
snapsFarAwayVertically: true,
showCloseButton: ShowCloseButton.inside,
hasShadow: false,
touchThrougArea: new Rect.fromLTWH(targetGlobalCenter.dx - 100,
targetGlobalCenter.dy - 100, 200.0, 160.0),
touchThroughAreaShape: ClipAreaShape.rectangle,
content: new Material(
child: Padding(
padding: const EdgeInsets.only(top: 20.0),
child: Text(
"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, "
"sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, "
"sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. ",
softWrap: true,
),
)),
);
tooltip!.show(context);
}
@override
Widget build(BuildContext context) {
return new WillPopScope(
onWillPop: _willPopCallback,
child: new GestureDetector(
onTap: onTap,
child: Container(
width: 20.0,
height: 20.0,
decoration: new BoxDecoration(
shape: BoxShape.circle,
color: Colors.blue,
)),
),
);
}
}
CodePudding user response:
In addition to all the tooltip related recommendations, if they don't quite meet your requirements, there's OverlayEntry It allows to use any widget, but is not super easy to handle, so there's a couple packages out there that do some work with Overlays for you that you might consider.
https://pub.dev/packages/flutter_portal
https://pub.dev/packages/modals
To show overlay entry when hovering over some widget, wrap it with MouseRegion and use its onEnter and onExit methods to show and hide overlay



