feat(wip): implement trip persistence through a local repository. Include loaded trips in the start page UI
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:anyway/core/constants.dart';
|
||||
import 'package:anyway/presentation/utils/trip_location_utils.dart';
|
||||
|
||||
class TripHeroHeader extends StatelessWidget {
|
||||
const TripHeroHeader({super.key, this.localeInfo});
|
||||
|
||||
final TripLocaleInfo? localeInfo;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final resolvedCity = localeInfo?.hasResolvedCity == true ? localeInfo!.cityName : null;
|
||||
final title = resolvedCity == null ? 'Welcome to your trip!' : 'Welcome to $resolvedCity!';
|
||||
final flag = localeInfo?.flagEmoji ?? '🏁';
|
||||
|
||||
return SizedBox(
|
||||
height: 70,
|
||||
child: Center(
|
||||
child: FittedBox(
|
||||
fit: BoxFit.scaleDown,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
DecoratedBox(
|
||||
decoration: const BoxDecoration(shape: BoxShape.circle, color: Color(0x11000000)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(10),
|
||||
child: Text(flag, style: const TextStyle(fontSize: 26)),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
_GradientText(title, style: Theme.of(context).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.w800, letterSpacing: -0.2)),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _GradientText extends StatelessWidget {
|
||||
const _GradientText(this.text, {this.style});
|
||||
|
||||
final String text;
|
||||
final TextStyle? style;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ShaderMask(
|
||||
shaderCallback: (bounds) => APP_GRADIENT.createShader(Rect.fromLTWH(0, 0, bounds.width, bounds.height)),
|
||||
blendMode: BlendMode.srcIn,
|
||||
child: Text(
|
||||
text,
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: (style ?? const TextStyle(fontSize: 24, fontWeight: FontWeight.bold)).copyWith(color: Colors.white),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user