// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; /// Flutter code sample for [OverlayPortal]. void main() => runApp(const OverlayPortalExampleApp()); class OverlayPortalExampleApp extends StatelessWidget { const OverlayPortalExampleApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('OverlayPortal Example')), body: const Center(child: ClickableTooltipWidget()), ), ); } } class ClickableTooltipWidget extends StatefulWidget { const ClickableTooltipWidget({super.key}); @override State<StatefulWidget> createState() => ClickableTooltipWidgetState(); } class ClickableTooltipWidgetState extends State<ClickableTooltipWidget> { final OverlayPortalController _tooltipController = OverlayPortalController(); @override Widget build(BuildContext context) { return TextButton( onPressed: _tooltipController.toggle, child: DefaultTextStyle( style: DefaultTextStyle.of(context).style.copyWith(fontSize: 50), child: OverlayPortal( controller: _tooltipController, overlayChildBuilder: (BuildContext context) { return const Positioned( right: 50, bottom: 50, child: ColoredBox( color: Colors.amberAccent, child: Text('tooltip'), ), ); }, child: const Text('Press to show/hide tooltip'), ), ), ); } }