| // 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'; |
| |
| import '../../gallery/demo.dart'; |
| |
| const String _introText = |
| 'Tooltips are short identifying messages that briefly appear in response to ' |
| 'a long press. Tooltip messages are also used by services that make Flutter ' |
| 'apps accessible, like screen readers.'; |
| |
| class TooltipDemo extends StatelessWidget { |
| const TooltipDemo({super.key}); |
| |
| static const String routeName = '/material/tooltips'; |
| |
| @override |
| Widget build(BuildContext context) { |
| final ThemeData theme = Theme.of(context); |
| return Scaffold( |
| appBar: AppBar( |
| title: const Text('Tooltips'), |
| actions: <Widget>[MaterialDemoDocumentationButton(routeName)], |
| ), |
| body: Builder( |
| builder: (BuildContext context) { |
| return SafeArea( |
| top: false, |
| bottom: false, |
| child: ListView( |
| children: <Widget>[ |
| Text(_introText, style: theme.textTheme.titleMedium), |
| Row( |
| children: <Widget>[ |
| Text('Long press the ', style: theme.textTheme.titleMedium), |
| Tooltip( |
| message: 'call icon', |
| child: Icon( |
| Icons.call, |
| size: 18.0, |
| color: theme.iconTheme.color, |
| ), |
| ), |
| Text(' icon.', style: theme.textTheme.titleMedium), |
| ], |
| ), |
| Center( |
| child: IconButton( |
| iconSize: 48.0, |
| icon: const Icon(Icons.call), |
| color: theme.iconTheme.color, |
| tooltip: 'Place a phone call', |
| onPressed: () { |
| ScaffoldMessenger.of(context).showSnackBar(const SnackBar( |
| content: Text('That was an ordinary tap.'), |
| )); |
| }, |
| ), |
| ), |
| ] |
| .map<Widget>((Widget widget) { |
| return Padding( |
| padding: const EdgeInsets.only(top: 16.0, left: 16.0, right: 16.0), |
| child: widget, |
| ); |
| }) |
| .toList(), |
| ), |
| ); |
| } |
| ), |
| ); |
| } |
| } |