Added statistics settings

This commit is contained in:
Juan Gilsanz Polo 2024-01-28 20:39:42 +01:00
parent 56943ec73d
commit 44d7da9977
13 changed files with 579 additions and 393 deletions

View file

@ -12,7 +12,7 @@ class CustomSettingsTile extends StatelessWidget {
final int? selectedItem;
const CustomSettingsTile({
Key? key,
super.key,
required this.title,
this.subtitle,
this.subtitleWidget,
@ -22,7 +22,7 @@ class CustomSettingsTile extends StatelessWidget {
this.padding,
required this.thisItem,
required this.selectedItem,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View file

@ -0,0 +1,76 @@
import 'package:flutter/material.dart';
class LoadingData extends StatelessWidget {
final String text;
const LoadingData({
super.key,
required this.text,
});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(24),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const CircularProgressIndicator(),
const SizedBox(height: 30),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Text(
text,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 22,
color: Theme.of(context).colorScheme.onSurfaceVariant
),
),
)
],
),
),
);
}
}
class ErrorLoadData extends StatelessWidget {
final String text;
const ErrorLoadData({
super.key,
required this.text
});
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Icon(
Icons.error,
color: Colors.red,
size: 50,
),
const SizedBox(height: 30),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Text(
text,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 22,
color: Theme.of(context).colorScheme.onSurfaceVariant
),
),
)
],
),
);
}
}

View file

@ -0,0 +1,52 @@
import 'package:flutter/material.dart';
class MasterSwitch extends StatelessWidget {
final String label;
final bool value;
final void Function(bool) onChange;
final EdgeInsets? margin;
const MasterSwitch({
super.key,
required this.label,
required this.value,
required this.onChange,
this.margin
});
@override
Widget build(BuildContext context) {
return Padding(
padding: margin ?? const EdgeInsets.symmetric(horizontal: 16),
child: Material(
color: Theme.of(context).colorScheme.primary.withOpacity(0.1),
borderRadius: BorderRadius.circular(28),
child: InkWell(
onTap: () => onChange(!value),
borderRadius: BorderRadius.circular(28),
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 8
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
label,
style: const TextStyle(
fontSize: 18,
),
),
Switch(
value: value,
onChanged: onChange,
)
],
),
),
),
),
);
}
}