mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-15 17:47:53 +00:00
80 lines
2.0 KiB
Dart
80 lines
2.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:syncrow_web/utils/color_manager.dart';
|
|
import 'package:syncrow_web/utils/constants/assets.dart';
|
|
import 'package:syncrow_web/utils/extension/build_context_x.dart';
|
|
import 'package:syncrow_web/utils/style.dart';
|
|
|
|
class AqiLocation extends StatelessWidget {
|
|
const AqiLocation({
|
|
required this.city,
|
|
required this.country,
|
|
required this.address,
|
|
super.key,
|
|
});
|
|
|
|
final String? city;
|
|
final String? country;
|
|
final String? address;
|
|
|
|
String _getFormattedLocation() {
|
|
if (city == null && country == null && address == null) {
|
|
return 'N/A';
|
|
}
|
|
|
|
final parts = <String>[];
|
|
|
|
if (city != null) parts.add(city!);
|
|
if (address != null) parts.add(address!);
|
|
final locationPart = parts.join(', ');
|
|
|
|
if (country != null) {
|
|
return locationPart.isEmpty ? country! : '$locationPart - $country';
|
|
}
|
|
|
|
return locationPart;
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
decoration: subSectionContainerDecoration.copyWith(
|
|
boxShadow: const [],
|
|
borderRadius: BorderRadius.circular(10),
|
|
),
|
|
padding: const EdgeInsetsDirectional.all(10),
|
|
child: Row(
|
|
spacing: 10,
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
_buildLocationPin(),
|
|
Expanded(
|
|
child: Text(
|
|
_getFormattedLocation(),
|
|
style: context.textTheme.bodySmall?.copyWith(
|
|
color: ColorsManager.textPrimaryColor,
|
|
fontWeight: FontWeight.w400,
|
|
fontSize: 12,
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
Widget _buildLocationPin() {
|
|
return SvgPicture.asset(
|
|
Assets.locationPin,
|
|
height: 12,
|
|
width: 12,
|
|
alignment: AlignmentDirectional.centerStart,
|
|
colorFilter: const ColorFilter.mode(
|
|
ColorsManager.vividBlue,
|
|
BlendMode.srcIn,
|
|
),
|
|
);
|
|
}
|
|
}
|