Pearoo 7b517b333a Revert "Rename everything filcnaplo-related to refilc"
This reverts commit d1a9625d93f30c19068f52fa9848a8266d8d97e7.
2023-09-19 18:16:57 +02:00

108 lines
3.3 KiB
Dart
Executable File

import 'package:auto_size_text/auto_size_text.dart';
import 'package:filcnaplo/ui/widgets/grade/grade_tile.dart';
import 'package:flutter/material.dart';
import 'package:i18n_extension/i18n_widget.dart';
class StatisticsTile extends StatelessWidget {
const StatisticsTile({
Key? key,
required this.value,
this.title,
this.decimal = true,
this.color,
this.valueSuffix = '',
this.fill = false,
this.outline = false,
}) : super(key: key);
final double value;
final Widget? title;
final bool decimal;
final Color? color;
final String valueSuffix;
final bool fill;
final bool outline;
@override
Widget build(BuildContext context) {
String valueText;
if (decimal) {
valueText = value.toStringAsFixed(2);
} else {
valueText = value.toStringAsFixed(0);
}
if (I18n.of(context).locale.languageCode != "en") valueText = valueText.replaceAll(".", ",");
if (value.isNaN) {
valueText = "?";
}
return Container(
width: double.infinity,
padding: const EdgeInsets.all(18.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.0),
color: Theme.of(context).colorScheme.background,
boxShadow: [
BoxShadow(
offset: const Offset(0, 21),
blurRadius: 23.0,
color: Theme.of(context).shadowColor,
)
],
),
constraints: const BoxConstraints(
minHeight: 140.0,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
if (title != null)
DefaultTextStyle(
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
fontWeight: FontWeight.w600,
fontSize: 18.0,
),
child: title!,
),
if (title != null) const SizedBox(height: 4.0),
Container(
margin: const EdgeInsets.only(top: 4.0),
padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 4.0),
decoration: BoxDecoration(
color: fill ? (color ?? gradeColor(context: context, value: value)).withOpacity(.2) : null,
border: outline || fill
? Border.all(
color: (color ?? gradeColor(context: context, value: value)).withOpacity(outline ? 1.0 : 0.0),
width: fill ? 2.0 : 5.0,
)
: null,
borderRadius: BorderRadius.circular(45.0),
),
child: AutoSizeText.rich(
TextSpan(
text: valueText,
children: [
if (valueSuffix != "")
TextSpan(
text: valueSuffix,
style: const TextStyle(fontSize: 24.0),
),
],
),
maxLines: 1,
minFontSize: 5,
textAlign: TextAlign.center,
style: TextStyle(
color: color ?? gradeColor(context: context, value: value),
fontWeight: FontWeight.w800,
fontSize: 32.0,
),
),
),
],
),
);
}
}