import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'sensor_provider.dart'; import 'package:timeago/timeago.dart' as timeago; void main() { runApp( ChangeNotifierProvider( create: (context) => SensorProvider(), child: const MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Sensor App', theme: ThemeData( primarySwatch: Colors.blue, ), home: const SensorScreen(), ); } } class SensorScreen extends StatefulWidget { const SensorScreen({super.key}); @override _SensorScreenState createState() => _SensorScreenState(); } class _SensorScreenState extends State { @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { Provider.of(context, listen: false).fetchData(); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Mercury'), ), body: Center( child: Consumer( builder: (context, sensorProvider, child) { if (sensorProvider.sensorData == null) { if (sensorProvider.error != null) { return Text('Error: ${sensorProvider.error}'); } return const CircularProgressIndicator(); } else { final data = sensorProvider.sensorData!; final timeAgo = timeago.format(DateTime.fromMillisecondsSinceEpoch(data.timestamp)); return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('🌡️ Temperature: ${data.temperature}°C'), Text('💧 Humidity: ${data.humidity}%'), Text('❄️ Dew Point: ${data.dewPoint}°C'), Text('🕒 $timeAgo'), ], ); } }, ), ), floatingActionButton: FloatingActionButton( onPressed: () { Provider.of(context, listen: false).fetchData(); }, child: const Icon(Icons.refresh), ), ); } }