fluffychat/lib/pangea/toolbar/message_practice/toolbar_button.dart
2025-12-17 13:08:15 -05:00

79 lines
2.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:shimmer/shimmer.dart';
import 'package:fluffychat/pangea/common/widgets/pressable_button.dart';
import 'package:fluffychat/pangea/toolbar/message_practice/message_practice_mode_enum.dart';
class ToolbarButton extends StatelessWidget {
final MessagePracticeMode mode;
final VoidCallback setMode;
final bool isComplete;
final bool isSelected;
final bool shimmer;
const ToolbarButton({
required this.mode,
required this.setMode,
required this.isComplete,
required this.isSelected,
this.shimmer = false,
super.key,
});
@override
Widget build(BuildContext context) {
final color = mode.iconButtonColor(context, isComplete);
return Container(
width: 44.0,
height: 44.0,
alignment: Alignment.center,
child: Tooltip(
message: mode.tooltip(context),
child: PressableButton(
borderRadius: BorderRadius.circular(20),
depressed: isSelected,
color: color,
onPressed: setMode,
playSound: true,
colorFactor:
Theme.of(context).brightness == Brightness.light ? 0.55 : 0.3,
builder: (context, depressed, shadowColor) => Stack(
alignment: Alignment.center,
children: [
Container(
height: 40.0,
width: 40.0,
decoration: BoxDecoration(
color: depressed ? shadowColor : color,
shape: BoxShape.circle,
),
),
if (shimmer)
Shimmer.fromColors(
baseColor: Colors.transparent,
highlightColor: Theme.of(context)
.colorScheme
.primaryContainer
.withAlpha(0xAA),
child: Container(
height: 40.0,
width: 40.0,
decoration: BoxDecoration(
color: depressed ? shadowColor : color,
shape: BoxShape.circle,
),
),
),
Icon(
mode.icon,
size: 20,
),
],
),
),
),
);
}
}