reports page

This commit is contained in:
Arseni
2026-02-16 21:05:38 +03:00
parent 11d4b9a608
commit 0eea39fb97
56 changed files with 2227 additions and 501 deletions

View File

@@ -0,0 +1,71 @@
import 'package:flutter/material.dart';
class DetailRow extends StatelessWidget {
final String label;
final String value;
final bool multiline;
final bool monospaced;
const DetailRow({
super.key,
required this.label,
required this.value,
this.multiline = false,
this.monospaced = false,
});
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final valueStyle = monospaced
? theme.textTheme.bodyMedium?.copyWith(fontFamily: 'monospace')
: theme.textTheme.bodyMedium;
return Padding(
padding: const EdgeInsets.symmetric(vertical: 2),
child: LayoutBuilder(
builder: (context, constraints) {
final isNarrow = constraints.maxWidth < 250;
if (isNarrow) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
label,
style: theme.textTheme.bodySmall?.copyWith(
color: theme.colorScheme.onSurfaceVariant,
),
),
const SizedBox(height: 2),
SelectableText(value, style: valueStyle),
],
);
}
return Row(
crossAxisAlignment: multiline
? CrossAxisAlignment.start
: CrossAxisAlignment.center,
children: [
Expanded(
flex: 2,
child: Text(
label,
style: theme.textTheme.bodySmall?.copyWith(
color: theme.colorScheme.onSurfaceVariant,
),
),
),
const SizedBox(width: 8),
Expanded(
flex: 3,
child: SelectableText(value, style: valueStyle),
),
],
);
},
),
);
}
}