You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.4 KiB
55 lines
1.4 KiB
2 years ago
|
part of '../neon_spreed.dart';
|
||
|
|
||
|
class SpreedCallButton extends StatelessWidget {
|
||
|
const SpreedCallButton({
|
||
|
required this.type,
|
||
|
required this.onPressed,
|
||
|
super.key,
|
||
|
});
|
||
|
|
||
|
final SpreedCallButtonType type;
|
||
|
|
||
|
final VoidCallback? onPressed;
|
||
|
|
||
|
@override
|
||
|
Widget build(final BuildContext context) {
|
||
|
late final String label;
|
||
|
late final IconData icon;
|
||
|
late final Color? backgroundColor;
|
||
|
switch (type) {
|
||
|
case SpreedCallButtonType.startCall:
|
||
|
icon = Icons.videocam;
|
||
|
label = SpreedLocalizations.of(context).callStart;
|
||
|
backgroundColor = null;
|
||
|
case SpreedCallButtonType.joinCall:
|
||
|
icon = Icons.phone;
|
||
|
label = SpreedLocalizations.of(context).callJoin;
|
||
|
backgroundColor = Colors.green;
|
||
|
case SpreedCallButtonType.leaveCall:
|
||
|
icon = Icons.videocam_off;
|
||
|
label = SpreedLocalizations.of(context).callLeave;
|
||
|
backgroundColor = Colors.red;
|
||
|
}
|
||
|
return Container(
|
||
|
margin: const EdgeInsets.all(5),
|
||
|
child: ElevatedButton.icon(
|
||
|
onPressed: onPressed,
|
||
|
icon: Icon(icon),
|
||
|
label: Text(label),
|
||
|
style: backgroundColor != null
|
||
|
? ElevatedButton.styleFrom(
|
||
|
backgroundColor: backgroundColor,
|
||
|
foregroundColor: Theme.of(context).colorScheme.background,
|
||
|
)
|
||
|
: null,
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
enum SpreedCallButtonType {
|
||
|
startCall,
|
||
|
joinCall,
|
||
|
leaveCall,
|
||
|
}
|