mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2025-01-10 10:00:00 +00:00
77 lines
2.1 KiB
Dart
77 lines
2.1 KiB
Dart
|
import 'package:easy_localization/easy_localization.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:selfprivacy/logic/cubit/dns_records/dns_records_cubit.dart';
|
||
|
import 'package:selfprivacy/ui/atoms/cards/filled_card.dart';
|
||
|
|
||
|
class DnsStateCard extends StatelessWidget {
|
||
|
const DnsStateCard({
|
||
|
required this.dnsState,
|
||
|
required this.fixCallback,
|
||
|
super.key,
|
||
|
});
|
||
|
|
||
|
final DnsRecordsStatus dnsState;
|
||
|
final Function fixCallback;
|
||
|
|
||
|
@override
|
||
|
Widget build(final BuildContext context) {
|
||
|
String description = '';
|
||
|
String subtitle = '';
|
||
|
Icon icon = const Icon(
|
||
|
Icons.check_circle_outline,
|
||
|
size: 24.0,
|
||
|
);
|
||
|
bool isError = false;
|
||
|
switch (dnsState) {
|
||
|
case DnsRecordsStatus.uninitialized:
|
||
|
description = 'domain.uninitialized'.tr();
|
||
|
icon = const Icon(
|
||
|
Icons.refresh,
|
||
|
size: 24.0,
|
||
|
);
|
||
|
isError = false;
|
||
|
break;
|
||
|
case DnsRecordsStatus.refreshing:
|
||
|
description = 'domain.refreshing'.tr();
|
||
|
icon = const Icon(
|
||
|
Icons.refresh,
|
||
|
size: 24.0,
|
||
|
);
|
||
|
isError = false;
|
||
|
break;
|
||
|
case DnsRecordsStatus.good:
|
||
|
description = 'domain.ok'.tr();
|
||
|
icon = const Icon(
|
||
|
Icons.check_circle_outline,
|
||
|
size: 24.0,
|
||
|
);
|
||
|
isError = false;
|
||
|
break;
|
||
|
case DnsRecordsStatus.error:
|
||
|
description = 'domain.error'.tr();
|
||
|
subtitle = 'domain.error_subtitle'.tr();
|
||
|
icon = const Icon(
|
||
|
Icons.error_outline,
|
||
|
size: 24.0,
|
||
|
);
|
||
|
isError = true;
|
||
|
break;
|
||
|
}
|
||
|
return FilledCard(
|
||
|
error: isError,
|
||
|
child: ListTile(
|
||
|
onTap: dnsState == DnsRecordsStatus.error ? () => fixCallback() : null,
|
||
|
leading: icon,
|
||
|
title: Text(description),
|
||
|
subtitle: subtitle != '' ? Text(subtitle) : null,
|
||
|
textColor: isError
|
||
|
? Theme.of(context).colorScheme.onErrorContainer
|
||
|
: Theme.of(context).colorScheme.onSurfaceVariant,
|
||
|
iconColor: isError
|
||
|
? Theme.of(context).colorScheme.onErrorContainer
|
||
|
: Theme.of(context).colorScheme.onSurfaceVariant,
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|