Skip to content

Commit f2a89eb

Browse files
refactoring and small fixes
1 parent 4ae3d89 commit f2a89eb

4 files changed

Lines changed: 39 additions & 36 deletions

File tree

lib/providers/barometer_state_provider.dart

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class BarometerStateProvider extends ChangeNotifier {
2121
double _pressureMax = 0;
2222
double _pressureSum = 0;
2323
int _dataCount = 0;
24-
bool _sensorAvailable = true;
24+
bool _sensorAvailable = false;
2525

2626
Function(String)? onSensorError;
2727

@@ -39,14 +39,24 @@ class BarometerStateProvider extends ChangeNotifier {
3939
notifyListeners();
4040
});
4141

42+
Timer sensorTimeout = Timer(const Duration(seconds: 3), () {
43+
if (!_sensorAvailable) {
44+
_handleSensorError(barometerSensorError);
45+
}
46+
});
47+
4248
_barometerSubscription = barometerEventStream().listen(
4349
(BarometerEvent event) {
4450
_currentPressure = event.pressure / 1013.25;
45-
_sensorAvailable = true;
51+
if (!_sensorAvailable) {
52+
_sensorAvailable = true;
53+
sensorTimeout.cancel();
54+
}
4655
notifyListeners();
4756
},
4857
onError: (error) {
4958
logger.e("$barometerSensorError $error");
59+
sensorTimeout.cancel();
5060
_handleSensorError(error);
5161
},
5262
cancelOnError: false,
@@ -58,21 +68,9 @@ class BarometerStateProvider extends ChangeNotifier {
5868
}
5969

6070
void _handleSensorError(dynamic error) {
61-
_sensorAvailable = false;
62-
String errorString = error.toString().toLowerCase();
63-
if (errorString.contains('not available') ||
64-
errorString.contains('not supported') ||
65-
errorString.contains('sensor not found') ||
66-
errorString.contains('no sensor')) {
67-
_handleSensorNotAvailable();
68-
} else {
69-
onSensorError?.call(barometerSensorError);
70-
}
71-
}
72-
73-
void _handleSensorNotAvailable() {
7471
_sensorAvailable = false;
7572
onSensorError?.call(barometerNotAvailable);
73+
logger.e("$barometerSensorError $error");
7674
}
7775

7876
void disposeSensors() {

lib/theme/colors.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,5 @@ Color selectedMenuColor = Colors.red;
4040
Color menuColor = Colors.grey;
4141
Color listTileFocusColor = Colors.grey[350]!;
4242
Color oscilloscopeOptionLabelColor = Colors.black;
43+
Color snackBarBackgroundColor = Colors.grey[700]!;
44+
Color snackBarContentColor = Colors.white;

lib/view/barometer_screen.dart

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
44
import 'package:provider/provider.dart';
55
import 'package:pslab/constants.dart';
66
import 'package:pslab/providers/barometer_state_provider.dart';
7+
import 'package:pslab/theme/colors.dart';
78
import 'package:pslab/view/widgets/common_scaffold_widget.dart';
89
import 'package:pslab/view/widgets/barometer_card.dart';
910
import 'package:fl_chart/fl_chart.dart';
@@ -21,9 +22,9 @@ class _BarometerScreenState extends State<BarometerScreen> {
2122
SnackBar(
2223
content: Text(
2324
message,
24-
style: const TextStyle(color: Colors.white),
25+
style: TextStyle(color: snackBarContentColor),
2526
),
26-
backgroundColor: Colors.grey[700],
27+
backgroundColor: snackBarBackgroundColor,
2728
duration: const Duration(seconds: 4),
2829
behavior: SnackBarBehavior.floating,
2930
),
@@ -79,8 +80,8 @@ class _BarometerScreenState extends State<BarometerScreen> {
7980
margin: EdgeInsets.fromLTRB(cardMargin, 0, cardMargin, cardMargin),
8081
padding: EdgeInsets.all(cardPadding),
8182
decoration: BoxDecoration(
82-
color: Colors.black,
83-
borderRadius: BorderRadius.circular(8),
83+
color: chartBackgroundColor,
84+
borderRadius: BorderRadius.zero,
8485
),
8586
child: _buildChart(
8687
screenWidth,
@@ -104,7 +105,7 @@ class _BarometerScreenState extends State<BarometerScreen> {
104105
? 8.0
105106
: 9.0;
106107
final style = TextStyle(
107-
color: Colors.white,
108+
color: chartTextColor,
108109
fontSize: fontSize,
109110
);
110111
String timeText;
@@ -137,7 +138,7 @@ class _BarometerScreenState extends State<BarometerScreen> {
137138
? 8.0
138139
: 9.0;
139140
final style = TextStyle(
140-
color: Colors.white,
141+
color: chartTextColor,
141142
fontSize: fontSize,
142143
);
143144

@@ -195,7 +196,7 @@ class _BarometerScreenState extends State<BarometerScreen> {
195196

196197
return LineChart(
197198
LineChartData(
198-
backgroundColor: Colors.black,
199+
backgroundColor: chartBackgroundColor,
199200
titlesData: FlTitlesData(
200201
show: true,
201202
topTitles: AxisTitles(
@@ -205,7 +206,7 @@ class _BarometerScreenState extends State<BarometerScreen> {
205206
timeAxisLabel,
206207
style: TextStyle(
207208
fontSize: axisNameFontSize,
208-
color: Colors.white,
209+
color: chartTextColor,
209210
fontWeight: FontWeight.bold,
210211
),
211212
),
@@ -225,7 +226,7 @@ class _BarometerScreenState extends State<BarometerScreen> {
225226
atm,
226227
style: TextStyle(
227228
fontSize: axisNameFontSize,
228-
color: Colors.white,
229+
color: chartTextColor,
229230
fontWeight: FontWeight.bold,
230231
),
231232
),
@@ -238,7 +239,7 @@ class _BarometerScreenState extends State<BarometerScreen> {
238239
child: Text(
239240
value.toStringAsFixed(2),
240241
style: TextStyle(
241-
color: Colors.white,
242+
color: chartTextColor,
242243
fontSize: chartFontSize,
243244
),
244245
),
@@ -252,7 +253,7 @@ class _BarometerScreenState extends State<BarometerScreen> {
252253
meterUnit,
253254
style: TextStyle(
254255
fontSize: axisNameFontSize,
255-
color: Colors.white,
256+
color: chartTextColor,
256257
fontWeight: FontWeight.bold,
257258
),
258259
),
@@ -274,11 +275,11 @@ class _BarometerScreenState extends State<BarometerScreen> {
274275
),
275276
borderData: FlBorderData(
276277
show: true,
277-
border: const Border(
278-
bottom: BorderSide(color: Colors.white38),
279-
left: BorderSide(color: Colors.white38),
280-
top: BorderSide(color: Colors.white38),
281-
right: BorderSide(color: Colors.white38),
278+
border: Border(
279+
bottom: BorderSide(color: chartBorderColor),
280+
left: BorderSide(color: chartBorderColor),
281+
top: BorderSide(color: chartBorderColor),
282+
right: BorderSide(color: chartBorderColor),
282283
),
283284
),
284285
minY: 0,
@@ -290,7 +291,7 @@ class _BarometerScreenState extends State<BarometerScreen> {
290291
LineChartBarData(
291292
spots: spots,
292293
isCurved: true,
293-
color: Colors.yellow,
294+
color: xOrientationChartLineColor,
294295
barWidth: screenWidth < 400 ? 1.5 : 2.0,
295296
isStrokeCapRound: true,
296297
dotData: const FlDotData(show: false),

lib/view/widgets/barometer_card.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import 'package:provider/provider.dart';
55
import 'package:pslab/view/widgets/instruments_stats.dart';
66
import 'package:pslab/constants.dart';
77

8+
import '../../theme/colors.dart';
9+
810
class BarometerCard extends StatefulWidget {
911
const BarometerCard({super.key});
1012
@override
@@ -38,7 +40,7 @@ class _BarometerCardState extends State<BarometerCard> {
3840
elevation: 1,
3941
child: Container(
4042
decoration: BoxDecoration(
41-
color: Colors.white,
43+
color: cardBackgroundColor,
4244
borderRadius: BorderRadius.circular(12),
4345
),
4446
child: Container(
@@ -101,7 +103,7 @@ class _BarometerCardState extends State<BarometerCard> {
101103
child: Text(
102104
'$altitudeLabel ($meterUnit)',
103105
style: TextStyle(
104-
color: Colors.black,
106+
color: cardContentColor,
105107
fontSize: fontSize,
106108
fontWeight: FontWeight.w600,
107109
),
@@ -112,13 +114,13 @@ class _BarometerCardState extends State<BarometerCard> {
112114
child: Container(
113115
padding: EdgeInsets.symmetric(horizontal: padding, vertical: 3),
114116
decoration: BoxDecoration(
115-
border: Border.all(color: Colors.pink.shade200),
117+
border: Border.all(color: instrumentStatBoxColor),
116118
borderRadius: BorderRadius.circular(6),
117119
),
118120
child: Text(
119121
currentAltitude.toStringAsFixed(2),
120122
style: TextStyle(
121-
color: Colors.black,
123+
color: cardContentColor,
122124
fontSize: fontSize,
123125
fontWeight: FontWeight.bold,
124126
),

0 commit comments

Comments
 (0)