blob: ec15311a11dc7e964b4955aefa0d359008244f69 [file] [log] [blame]
// 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';
void main() {
runApp(const MaterialApp(
title: 'Hover Demo',
home: HoverDemo(),
));
}
class DemoButton extends StatelessWidget {
const DemoButton({Key? key, required this.name}) : super(key: key);
final String name;
void _handleOnPressed() {
print('Button $name pressed.');
}
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () => _handleOnPressed(),
child: Text(name),
);
}
}
class HoverDemo extends StatefulWidget {
const HoverDemo({Key? key}) : super(key: key);
@override
State<HoverDemo> createState() => _HoverDemoState();
}
class _HoverDemoState extends State<HoverDemo> {
@override
Widget build(BuildContext context) {
final TextTheme textTheme = Theme.of(context).textTheme;
final ButtonStyle overrideFocusColor = ButtonStyle(
overlayColor: MaterialStateProperty.resolveWith<Color>((Set<MaterialState> states) {
return states.contains(MaterialState.focused) ? Colors.deepOrangeAccent : Colors.transparent;
})
);
return DefaultTextStyle(
style: textTheme.headline4!,
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>[
Row(
children: <Widget>[
ElevatedButton(
onPressed: () => print('Button pressed.'),
style: overrideFocusColor,
child: const Text('Button'),
),
TextButton(
onPressed: () => print('Button pressed.'),
style: overrideFocusColor,
child: const Text('Button'),
),
IconButton(
onPressed: () => print('Button pressed'),
icon: const Icon(Icons.access_alarm),
focusColor: Colors.deepOrangeAccent,
),
],
),
const Padding(
padding: EdgeInsets.all(8.0),
child: TextField(
decoration: InputDecoration(labelText: 'Enter Text', filled: true),
),
),
const Padding(
padding: EdgeInsets.all(8.0),
child: TextField(
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Enter Text',
filled: false,
),
),
),
],
);
}),
),
),
);
}
}