Initial commit
This commit is contained in:
34
lib/widgets/hover_builder.dart
Normal file
34
lib/widgets/hover_builder.dart
Normal file
@@ -0,0 +1,34 @@
|
||||
// SPDX-FileCopyrightText: 2019-Present Christian Kußowski
|
||||
// SPDX-FileCopyrightText: 2019-Present Contributors to FluffyChat
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import 'package:material_ui/material_ui.dart';
|
||||
|
||||
class HoverBuilder extends StatefulWidget {
|
||||
final Widget Function(BuildContext context, bool hovered) builder;
|
||||
const HoverBuilder({required this.builder, super.key});
|
||||
|
||||
@override
|
||||
State<HoverBuilder> createState() => _HoverBuilderState();
|
||||
}
|
||||
|
||||
class _HoverBuilderState extends State<HoverBuilder> {
|
||||
bool hovered = false;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MouseRegion(
|
||||
onEnter: (_) => hovered
|
||||
? null
|
||||
: setState(() {
|
||||
hovered = true;
|
||||
}),
|
||||
onExit: (_) => !hovered
|
||||
? null
|
||||
: setState(() {
|
||||
hovered = false;
|
||||
}),
|
||||
child: widget.builder(context, hovered),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user