From e19d761f4d5c3221a6212d5bf5ec85fa0b4cc6b4 Mon Sep 17 00:00:00 2001 From: Dan Cojocaru Date: Thu, 10 Nov 2022 06:26:10 +0100 Subject: [PATCH] Add auto refresh to station view --- lib/providers.dart | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/providers.dart b/lib/providers.dart index 724d9f5..001b8ee 100644 --- a/lib/providers.dart +++ b/lib/providers.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:info_tren/api/station_data.dart'; import 'package:info_tren/models.dart'; @@ -32,7 +34,18 @@ final trainInfoArgumentsProvider = Provider( (_) => throw UnimplementedError('Please override in ProviderScope'), ); -final stationDataProvider = FutureProvider.family((ref, String stationName) => getStationData(stationName)); +final stationDataProvider = FutureProvider.family((ref, String stationName) async { + final data = await getStationData(stationName); + + final timer = Timer(const Duration(minutes: 2), () { + ref.invalidateSelf(); + }); + ref.onDispose(() { + timer.cancel(); + }); + + return data; +}); final viewStationArgumentsProvider = Provider( (_) => throw UnimplementedError('Please override in ProviderScope'), ); @@ -40,4 +53,4 @@ final viewStationDataProvider = Provider((ref) { final args = ref.watch(viewStationArgumentsProvider); final data = ref.watch(stationDataProvider(args.stationName)); return data; -}); +}, dependencies: [viewStationArgumentsProvider, stationDataProvider]);