Fladder/lib/screens/settings/widgets/settings_message_box.dart
PartyDonut 2c71dde228
feature: Added update notification and download links per platform (#362)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
2025-06-01 21:36:50 +02:00

59 lines
1.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:fladder/util/list_padding.dart';
enum MessageType {
info,
warning,
error;
Color color(BuildContext context) => switch (this) {
MessageType.info => Theme.of(context).colorScheme.secondaryContainer,
MessageType.warning => Theme.of(context).colorScheme.primaryContainer,
MessageType.error => Theme.of(context).colorScheme.errorContainer,
};
}
class SettingsMessageBox extends ConsumerWidget {
final String message;
final MessageType messageType;
const SettingsMessageBox(this.message, {this.messageType = MessageType.info, super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return SizedBox(
width: double.infinity,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8).add(
EdgeInsets.symmetric(
horizontal: MediaQuery.paddingOf(context).horizontal,
),
),
child: Card(
elevation: 2,
color: messageType.color(context),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Icon(
switch (messageType) {
MessageType.info => IconsaxPlusLinear.information,
MessageType.warning => IconsaxPlusLinear.warning_2,
MessageType.error => IconsaxPlusLinear.danger,
},
),
Flexible(
child: Text(message),
),
].addInBetween(const SizedBox(width: 12)),
),
),
),
),
);
}
}