super_tooltip 2.0.3 super_tooltip: ^2.0.3 copied to clipboard
Super flexible Tooltip class that gets opend in the screens overlay
import 'package:flutter/material.dart';
import 'package:super_tooltip/super_tooltip.dart';
void main() => runApp(const MainApp());
class MainApp extends StatelessWidget {
const MainApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Super Tooltip Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const ExamplePage(),
);
}
}
class ExamplePage extends StatefulWidget {
const ExamplePage({
Key? key,
}) : super(key: key);
@override
State createState() => _ExamplePageState();
}
class _ExamplePageState extends State<ExamplePage> {
@override
Widget build(BuildContext context) {
return const Scaffold(
backgroundColor: Colors.white,
body: Center(child: TargetWidget()),
);
}
}
class TargetWidget extends StatefulWidget {
const TargetWidget({Key? key}) : super(key: key);
@override
State createState() => _TargetWidgetState();
}
class _TargetWidgetState extends State<TargetWidget> {
final _controller = SuperTooltipController();
Future<bool> _willPopCallback() async {
// If the tooltip is open we don't pop the page on a backbutton press
// but close the ToolTip
if (_controller.isVisible) {
await _controller.hideTooltip();
return false;
}
return true;
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _willPopCallback,
child: GestureDetector(
onTap: () async {
await _controller.showTooltip();
},
child: SuperTooltip(
showBarrier: true,
controller: _controller,
popupDirection: TooltipDirection.right,
backgroundColor: Color(0xff2f2d2f),
left: 30,
right: 30,
arrowTipDistance: 15.0,
arrowBaseWidth: 20.0,
arrowLength: 20.0,
borderWidth: 2.0,
constraints: const BoxConstraints(
minHeight: 0.0,
maxHeight: 100,
minWidth: 0.0,
maxWidth: 100,
),
showCloseButton: ShowCloseButton.none,
touchThroughAreaShape: ClipAreaShape.rectangle,
touchThroughAreaCornerRadius: 30,
barrierColor: Color.fromARGB(26, 47, 45, 47),
content: const 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,
style: TextStyle(
color: Colors.white,
),
),
child: Container(
width: 40.0,
height: 40.0,
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: Colors.blue,
),
child: Icon(
Icons.add,
color: Colors.white,
),
),
),
),
);
}
void makeTooltip() {
_controller.showTooltip();
}
}