Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f31967aa3e |
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.5.8] - 2026-01-08
|
||||
|
||||
### Changed
|
||||
|
||||
- **Bottom-aligned widget content** - All environment widgets now align content from the bottom
|
||||
- Creates consistent visual baseline across Sun Position, Weather, Air Quality, and Forecast cards
|
||||
- Footers (weather details, pollutants) sit at the same level across cards
|
||||
|
||||
### Added
|
||||
|
||||
- **Wind direction in Weather** - Wind chip now shows direction (e.g., "SE 14 km/h")
|
||||
|
||||
## [1.5.7] - 2026-01-08
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -69,14 +69,13 @@ class AirQualityWidget extends StatelessWidget {
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
|
||||
// Content area with minimum height to match other widgets
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(minHeight: 170),
|
||||
// Content area with fixed height, content aligned to bottom
|
||||
SizedBox(
|
||||
height: 170,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
const SizedBox(height: 8),
|
||||
// AQI Display
|
||||
Row(
|
||||
children: [
|
||||
|
||||
@@ -108,10 +108,11 @@ class ForecastWidget extends StatelessWidget {
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
|
||||
// Content area with minimum height to match other widgets
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(minHeight: 170),
|
||||
child: Center(
|
||||
// Content area with fixed height, content aligned to bottom
|
||||
SizedBox(
|
||||
height: 170,
|
||||
child: Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: SizedBox(
|
||||
height: 110,
|
||||
child: ListView.separated(
|
||||
|
||||
@@ -71,14 +71,13 @@ class WeatherWidget extends StatelessWidget {
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
|
||||
// Content area with minimum height to match other widgets
|
||||
ConstrainedBox(
|
||||
constraints: const BoxConstraints(minHeight: 170),
|
||||
// Content area with fixed height, content aligned to bottom
|
||||
SizedBox(
|
||||
height: 170,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
const SizedBox(height: 8),
|
||||
// Main weather display (matching AQI layout)
|
||||
Row(
|
||||
children: [
|
||||
@@ -167,8 +166,9 @@ class WeatherWidget extends StatelessWidget {
|
||||
if (weather.windSpeed != null)
|
||||
_DetailChip(
|
||||
label: 'Wind',
|
||||
value:
|
||||
'${weather.windSpeed!.round()} ${weather.windUnit}',
|
||||
value: weather.windDirection != null
|
||||
? '${weather.windDirection} ${weather.windSpeed!.round()} ${weather.windUnit}'
|
||||
: '${weather.windSpeed!.round()} ${weather.windUnit}',
|
||||
),
|
||||
if (weather.feelsLike != null)
|
||||
_DetailChip(
|
||||
@@ -341,6 +341,7 @@ WeatherData _fromApiData(api.WeatherData data) {
|
||||
icon: _getWeatherIcon(data.conditions, data.icon),
|
||||
humidity: data.humidity,
|
||||
windSpeed: data.windSpeed,
|
||||
windDirection: data.windDirection,
|
||||
feelsLike: data.feelsLike,
|
||||
iconColor: _getWeatherColor(data.conditions),
|
||||
);
|
||||
@@ -405,6 +406,7 @@ class WeatherData {
|
||||
this.unit = TemperatureUnit.celsius,
|
||||
this.humidity,
|
||||
this.windSpeed,
|
||||
this.windDirection,
|
||||
this.windUnit = 'km/h',
|
||||
this.feelsLike,
|
||||
this.iconColor,
|
||||
@@ -417,6 +419,7 @@ class WeatherData {
|
||||
final TemperatureUnit unit;
|
||||
final int? humidity;
|
||||
final double? windSpeed;
|
||||
final String? windDirection;
|
||||
final String windUnit;
|
||||
final double? feelsLike;
|
||||
final Color? iconColor;
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||
# In Windows, build-name is used as the major, minor, and patch parts
|
||||
# of the product and file versions while build-number is used as the build suffix.
|
||||
version: 1.5.7+1
|
||||
version: 1.5.8+1
|
||||
|
||||
environment:
|
||||
sdk: ^3.10.4
|
||||
|
||||
Reference in New Issue
Block a user