Skip to content

Commit d45f96f

Browse files
authored
Display day in today chart (#11)
* Display day in today chart * Better names
1 parent 544621c commit d45f96f

File tree

6 files changed

+56
-37
lines changed

6 files changed

+56
-37
lines changed

lib/src/l10n/app_de.arb

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@
99
"enterValidApiKey": "Bitte gib einen (gültigen) API Schlüssel ein",
1010
"hourly": "Stündlich",
1111
"daily": "Täglich",
12-
"now": "Jetzt"
12+
"now": "Jetzt",
13+
"today": "Heute"
1314
}

lib/src/l10n/app_en.arb

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@
99
"enterValidApiKey": "Please enter a (valid) API key",
1010
"hourly": "Hourly",
1111
"daily": "Daily",
12-
"now": "Now"
12+
"now": "Now",
13+
"today": "Today"
1314
}

lib/src/weather/view/forecast_chart.dart renamed to lib/src/weather/view/daily_bar_chart.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import '../weather_data_x.dart';
1313
import '../weather_model.dart';
1414
import 'error_view.dart';
1515

16-
class ForeCastChart extends StatelessWidget with WatchItMixin {
17-
const ForeCastChart({super.key});
16+
class DailyBarChart extends StatelessWidget with WatchItMixin {
17+
const DailyBarChart({super.key});
1818

1919
@override
2020
Widget build(BuildContext context) {

lib/src/weather/view/today_chart.dart renamed to lib/src/weather/view/hourly_line_chart.dart

+45-28
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,20 @@ import 'package:yaru/yaru.dart';
77

88
import '../../../constants.dart';
99
import '../../build_context_x.dart';
10+
import '../../l10n/l10n.dart';
1011
import '../weather_data_x.dart';
1112
import '../weather_model.dart';
1213
import 'error_view.dart';
13-
import 'today_tile.dart';
14+
import 'now_tile.dart';
1415

15-
class TodayChart extends StatefulWidget with WatchItStatefulWidgetMixin {
16-
const TodayChart({super.key});
16+
class HourlyLineChart extends StatefulWidget with WatchItStatefulWidgetMixin {
17+
const HourlyLineChart({super.key});
1718

1819
@override
19-
State<TodayChart> createState() => _TodayChartState();
20+
State<HourlyLineChart> createState() => _HourlyLineChartState();
2021
}
2122

22-
class _TodayChartState extends State<TodayChart> {
23+
class _HourlyLineChartState extends State<HourlyLineChart> {
2324
late ScrollController _scrollController;
2425

2526
List<Color> gradientColors = [
@@ -42,7 +43,7 @@ class _TodayChartState extends State<TodayChart> {
4243
@override
4344
Widget build(BuildContext context) {
4445
final forecast =
45-
watchPropertyValue((WeatherModel m) => m.notTodayFullForecast);
46+
watchPropertyValue((WeatherModel m) => m.fiveDaysForCast ?? []);
4647
final mq = context.mq;
4748

4849
final cityName = watchPropertyValue((WeatherModel m) => m.lastLocation);
@@ -76,7 +77,7 @@ class _TodayChartState extends State<TodayChart> {
7677
width: forecast.length * 100,
7778
height: 400,
7879
child: LineChart(
79-
mainData(forecast),
80+
mainData(forecast: forecast, data: data),
8081
),
8182
),
8283
),
@@ -114,7 +115,7 @@ class _TodayChartState extends State<TodayChart> {
114115
),
115116
),
116117
if (data != null)
117-
TodayTile(
118+
NowTile(
118119
data: data,
119120
fontSize: 20,
120121
cityName: cityName,
@@ -123,29 +124,41 @@ class _TodayChartState extends State<TodayChart> {
123124
);
124125
}
125126

126-
Widget bottomTitleWidgets(
127-
double value,
128-
TitleMeta meta,
129-
List<WeatherData> data,
130-
) {
131-
const style = TextStyle(
132-
fontWeight: FontWeight.bold,
133-
fontSize: 16,
134-
);
135-
Widget text;
136-
text = Text(
137-
data[value.toInt()].getTime(context),
138-
style: style,
139-
);
140-
127+
Widget bottomTitleWidgets({
128+
required double value,
129+
required TitleMeta meta,
130+
required List<WeatherData> forecast,
131+
required WeatherData data,
132+
}) {
133+
final weekday = forecast[value.toInt()].getWeekDay(context);
141134
return SideTitleWidget(
142135
fitInside: SideTitleFitInsideData.fromTitleMeta(meta),
143136
axisSide: meta.axisSide,
144-
child: text,
137+
child: Column(
138+
children: [
139+
Text(
140+
forecast[value.toInt()].getTime(context),
141+
style: const TextStyle(
142+
fontWeight: FontWeight.bold,
143+
fontSize: 16,
144+
),
145+
),
146+
Text(
147+
weekday == data.getWeekDay(context) ? context.l10n.today : weekday,
148+
style: const TextStyle(
149+
fontWeight: FontWeight.w400,
150+
fontSize: 10,
151+
),
152+
),
153+
],
154+
),
145155
);
146156
}
147157

148-
LineChartData mainData(List<WeatherData> forecast) {
158+
LineChartData mainData({
159+
required List<WeatherData> forecast,
160+
required WeatherData data,
161+
}) {
149162
final outlineColor = context.theme.colorScheme.onSurface.withOpacity(0.2);
150163

151164
return LineChartData(
@@ -181,10 +194,14 @@ class _TodayChartState extends State<TodayChart> {
181194
bottomTitles: AxisTitles(
182195
sideTitles: SideTitles(
183196
showTitles: true,
184-
reservedSize: 35,
197+
reservedSize: 55,
185198
interval: 1,
186-
getTitlesWidget: (value, meta) =>
187-
bottomTitleWidgets(value, meta, forecast),
199+
getTitlesWidget: (value, meta) => bottomTitleWidgets(
200+
value: value,
201+
meta: meta,
202+
forecast: forecast,
203+
data: data,
204+
),
188205
),
189206
),
190207
leftTitles: const AxisTitles(

lib/src/weather/view/today_tile.dart renamed to lib/src/weather/view/now_tile.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import '../../l10n/l10n.dart';
99
import '../theme_x.dart';
1010
import '../weather_data_x.dart';
1111

12-
class TodayTile extends StatelessWidget {
12+
class NowTile extends StatelessWidget {
1313
final WeatherData data;
1414
final String? cityName;
1515
final double fontSize;
1616
final String? position;
1717
final String? time;
1818
final BorderRadiusGeometry? borderRadius;
1919

20-
const TodayTile({
20+
const NowTile({
2121
super.key,
2222
required this.data,
2323
this.cityName,

lib/src/weather/view/weather_page.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import '../../../constants.dart';
66
import '../../app/app_model.dart';
77
import '../../app/side_bar.dart';
88
import '../../l10n/l10n.dart';
9-
import 'forecast_chart.dart';
10-
import 'today_chart.dart';
9+
import 'daily_bar_chart.dart';
10+
import 'hourly_line_chart.dart';
1111

1212
class WeatherPage extends StatelessWidget with WatchItMixin {
1313
const WeatherPage({super.key, this.showDrawer = false});
@@ -59,7 +59,7 @@ class WeatherPage extends StatelessWidget with WatchItMixin {
5959
),
6060
),
6161
),
62-
body: showToday ? const TodayChart() : const ForeCastChart(),
62+
body: showToday ? const HourlyLineChart() : const DailyBarChart(),
6363
),
6464
);
6565
}

0 commit comments

Comments
 (0)