💄 Optimize check in

This commit is contained in:
2025-09-07 18:30:28 +08:00
parent 6f9d51673b
commit 646e95a9fc

View File

@@ -100,15 +100,14 @@ class CheckInWidget extends HookConsumerWidget {
return Card( return Card(
margin: margin:
margin ?? EdgeInsets.only(left: 16, right: 16, top: 16, bottom: 8), margin ?? EdgeInsets.only(left: 16, right: 16, top: 16, bottom: 8),
child: Column( child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
spacing: 8,
children: [ children: [
Column( Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
spacing: 8, spacing: 6,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
@@ -127,11 +126,31 @@ class CheckInWidget extends HookConsumerWidget {
Theme.of(context).colorScheme.onSecondaryContainer, Theme.of(context).colorScheme.onSecondaryContainer,
), ),
Text(DateFormat('MM/dd').format(DateTime.now())) Text(DateFormat('MM/dd').format(DateTime.now()))
.fontSize(12) .fontSize(16)
.textColor( .textColor(
Theme.of(context).colorScheme.onSecondaryContainer, Theme.of(context).colorScheme.onSecondaryContainer,
) ),
.padding(top: 2), Expanded(
child: AnimatedSwitcher(
duration: const Duration(milliseconds: 300),
child: todayResult.when(
data: (result) {
return Text(
result == null
? 'checkInNone'
: 'checkInResultLevel${result.level}',
textAlign: TextAlign.start,
).tr().fontSize(15).bold();
},
loading:
() =>
Text('checkInNone').tr().fontSize(15).bold(),
error:
(err, stack) =>
Text('error').tr().fontSize(15).bold(),
),
).alignment(Alignment.centerLeft),
),
], ],
), ),
Row( Row(
@@ -140,6 +159,7 @@ class CheckInWidget extends HookConsumerWidget {
Text('notableDayNext') Text('notableDayNext')
.tr(args: [nextNotableDay.value?.localName ?? 'idk']) .tr(args: [nextNotableDay.value?.localName ?? 'idk'])
.fontSize(12), .fontSize(12),
if (nextNotableDay.value != null)
SlideCountdown( SlideCountdown(
decoration: const BoxDecoration(), decoration: const BoxDecoration(),
style: const TextStyle(fontSize: 12), style: const TextStyle(fontSize: 12),
@@ -151,24 +171,17 @@ class CheckInWidget extends HookConsumerWidget {
), ),
], ],
), ),
], const Gap(6),
).padding(horizontal: 16, top: 8), AnimatedSwitcher(
const Divider(height: 1),
Row(
children: [
Expanded(
child: AnimatedSwitcher(
duration: const Duration(milliseconds: 300), duration: const Duration(milliseconds: 300),
child: todayResult.when( child: todayResult.when(
data: (result) { data: (result) {
if (result == null) return _CheckInNoneWidget(); if (result == null) {
return Column( return Text('checkInNoneHint').tr().fontSize(11);
crossAxisAlignment: CrossAxisAlignment.stretch, }
children: [ return Wrap(
Text( alignment: WrapAlignment.start,
'checkInResultLevel${result.level}', runAlignment: WrapAlignment.start,
).tr().fontSize(15).bold(),
Wrap(
children: children:
result.tips result.tips
.map((e) { .map((e) {
@@ -195,11 +208,9 @@ class CheckInWidget extends HookConsumerWidget {
) )
.toList() .toList()
..removeLast(), ..removeLast(),
),
],
); );
}, },
loading: () => _CheckInNoneWidget(), loading: () => Text('checkInNoneHint').tr().fontSize(11),
error: error:
(err, stack) => Column( (err, stack) => Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@@ -209,6 +220,8 @@ class CheckInWidget extends HookConsumerWidget {
], ],
), ),
), ),
).alignment(Alignment.centerLeft),
],
), ),
), ),
IconButton.outlined( IconButton.outlined(
@@ -238,24 +251,7 @@ class CheckInWidget extends HookConsumerWidget {
), ),
), ),
], ],
).padding(horizontal: 16, bottom: 12, top: 4), ).padding(horizontal: 16, vertical: 12),
],
),
);
}
}
class _CheckInNoneWidget extends StatelessWidget {
const _CheckInNoneWidget();
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text('checkInNone').tr().fontSize(15).bold(),
Text('checkInNoneHint').tr().fontSize(11),
],
); );
} }
} }