hover.dart 2.77 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4 5 6
// 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';

7
void main() {
8 9 10 11 12 13 14
  runApp(const MaterialApp(
    title: 'Hover Demo',
    home: HoverDemo(),
  ));
}

class HoverDemo extends StatefulWidget {
15
  const HoverDemo({super.key});
16 17

  @override
18
  State<HoverDemo> createState() => _HoverDemoState();
19 20 21 22 23 24
}

class _HoverDemoState extends State<HoverDemo> {
  @override
  Widget build(BuildContext context) {
    final TextTheme textTheme = Theme.of(context).textTheme;
25 26
    final ButtonStyle overrideFocusColor = ButtonStyle(
      overlayColor: MaterialStateProperty.resolveWith<Color>((Set<MaterialState> states) {
27
        return states.contains(MaterialState.focused) ? Colors.deepOrangeAccent : Colors.transparent;
28 29
      })
    );
30 31

    return DefaultTextStyle(
32
      style: textTheme.headlineMedium!,
33 34 35 36 37 38 39 40 41 42 43 44 45
      child: Scaffold(
        appBar: AppBar(
          title: const Text('Hover Demo'),
        ),
        floatingActionButton: FloatingActionButton(
          child: const Text('+'),
          onPressed: () {},
        ),
        body: Center(
          child: Builder(builder: (BuildContext context) {
            return Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
46 47
                Row(
                  children: <Widget>[
48
                    ElevatedButton(
49
                      onPressed: () => print('Button pressed.'),
50
                      style: overrideFocusColor,
51
                      child: const Text('Button'),
52
                    ),
53
                    TextButton(
54
                      onPressed: () => print('Button pressed.'),
55
                      style: overrideFocusColor,
56
                      child: const Text('Button'),
57 58 59 60 61 62 63
                    ),
                    IconButton(
                      onPressed: () => print('Button pressed'),
                      icon: const Icon(Icons.access_alarm),
                      focusColor: Colors.deepOrangeAccent,
                    ),
                  ],
64
                ),
65 66
                const Padding(
                  padding: EdgeInsets.all(8.0),
67 68 69 70
                  child: TextField(
                    decoration: InputDecoration(labelText: 'Enter Text', filled: true),
                  ),
                ),
71 72
                const Padding(
                  padding: EdgeInsets.all(8.0),
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
                  child: TextField(
                    decoration: InputDecoration(
                      border: OutlineInputBorder(),
                      labelText: 'Enter Text',
                      filled: false,
                    ),
                  ),
                ),
              ],
            );
          }),
        ),
      ),
    );
  }
}