Browse Source

Add auto refresh to station view

master
Kenneth Bruen 2 years ago
parent
commit
e19d761f4d
Signed by: kbruen
GPG Key ID: C1980A470C3EE5B1
  1. 17
      lib/providers.dart

17
lib/providers.dart

@ -1,3 +1,5 @@
import 'dart:async';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:info_tren/api/station_data.dart'; import 'package:info_tren/api/station_data.dart';
import 'package:info_tren/models.dart'; import 'package:info_tren/models.dart';
@ -32,7 +34,18 @@ final trainInfoArgumentsProvider = Provider<TrainInfoArguments>(
(_) => throw UnimplementedError('Please override in ProviderScope'), (_) => 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<ViewStationArguments>( final viewStationArgumentsProvider = Provider<ViewStationArguments>(
(_) => throw UnimplementedError('Please override in ProviderScope'), (_) => throw UnimplementedError('Please override in ProviderScope'),
); );
@ -40,4 +53,4 @@ final viewStationDataProvider = Provider((ref) {
final args = ref.watch(viewStationArgumentsProvider); final args = ref.watch(viewStationArgumentsProvider);
final data = ref.watch(stationDataProvider(args.stationName)); final data = ref.watch(stationDataProvider(args.stationName));
return data; return data;
}); }, dependencies: [viewStationArgumentsProvider, stationDataProvider]);

Loading…
Cancel
Save