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]);