Skip to content

Commit ddaba2b

Browse files
committed
riverpod update
1 parent 179166a commit ddaba2b

File tree

19 files changed

+391
-164
lines changed

19 files changed

+391
-164
lines changed

android/build/reports/problems/problems-report.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@
646646
<script type="text/javascript">
647647
function configurationCacheProblems() { return (
648648
// begin-report-data
649-
{"diagnostics":[{"locations":[{"pluginId":"com.android.internal.application"}],"problem":[{"text":"Declaring dependencies using multi-string notation has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 10."}],"contextualLabel":"Declaring dependencies using multi-string notation has been deprecated.","documentationLink":"https://docs.gradle.org/9.2.0/userguide/upgrading_version_9.html#dependency_multi_string_notation","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"declaring-dependencies-using-multi-string-notation","displayName":"Declaring dependencies using multi-string notation has been deprecated."}],"solutions":[[{"text":"Please use single-string notation instead: \"com.android.tools.lint:lint-gradle:31.13.0\"."}]]},{"locations":[{"pluginId":"com.android.internal.application"}],"problem":[{"text":"Declaring dependencies using multi-string notation has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 10."}],"contextualLabel":"Declaring dependencies using multi-string notation has been deprecated.","documentationLink":"https://docs.gradle.org/9.2.0/userguide/upgrading_version_9.html#dependency_multi_string_notation","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"declaring-dependencies-using-multi-string-notation","displayName":"Declaring dependencies using multi-string notation has been deprecated."}],"solutions":[[{"text":"Please use single-string notation instead: \"com.android.tools.build:aapt2:8.13.0-13719691:windows\"."}]]},{"locations":[{"path":"C:\\Users\\lucas\\bicycle-computer-app\\android\\app\\build.gradle","line":91}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/9.2.0/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('source = <value>') instead."}]]}],"problemsReport":{"totalProblemCount":3,"buildName":"android","requestedTasks":":app:lintDebug","documentationLink":"https://docs.gradle.org/9.2.0/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
649+
{"diagnostics":[{"locations":[{"pluginId":"com.android.internal.application"}],"problem":[{"text":"Declaring dependencies using multi-string notation has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 10."}],"contextualLabel":"Declaring dependencies using multi-string notation has been deprecated.","documentationLink":"https://docs.gradle.org/9.2.0/userguide/upgrading_version_9.html#dependency_multi_string_notation","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"declaring-dependencies-using-multi-string-notation","displayName":"Declaring dependencies using multi-string notation has been deprecated."}],"solutions":[[{"text":"Please use single-string notation instead: \"com.android.tools.lint:lint-gradle:31.13.0\"."}]]},{"locations":[{"pluginId":"com.android.internal.application"}],"problem":[{"text":"Declaring dependencies using multi-string notation has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 10."}],"contextualLabel":"Declaring dependencies using multi-string notation has been deprecated.","documentationLink":"https://docs.gradle.org/9.2.0/userguide/upgrading_version_9.html#dependency_multi_string_notation","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"declaring-dependencies-using-multi-string-notation","displayName":"Declaring dependencies using multi-string notation has been deprecated."}],"solutions":[[{"text":"Please use single-string notation instead: \"com.android.tools.build:aapt2:8.13.0-13719691:windows\"."}]]}],"problemsReport":{"totalProblemCount":2,"buildName":"android","requestedTasks":"assembleDebug","documentationLink":"https://docs.gradle.org/9.2.0/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
650650
// end-report-data
651651
);}
652652
</script>

lib/main.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,18 @@ void main() async {
5454
}
5555

5656
/// Provider for the theme mode.
57-
final themeModeProvider = StateProvider<ThemeMode>((ref) {
58-
return ThemeMode.light;
59-
});
57+
final themeModeProvider = NotifierProvider<ThemeModeNotifier, ThemeMode>(() => ThemeModeNotifier());
58+
59+
class ThemeModeNotifier extends Notifier<ThemeMode> {
60+
@override
61+
ThemeMode build() {
62+
return ThemeMode.light;
63+
}
64+
65+
void setThemeMode(ThemeMode mode) {
66+
state = mode;
67+
}
68+
}
6069

6170
/// Provider for the MyAppViewModel.
6271
final myAppProvider = Provider((ref) {

lib/presentation/common/activity/view_model/activity_item_view_model.dart

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,22 @@ import '../../user/view_model/profile_picture_view_model.dart';
1111
import 'state/activity_item_state.dart';
1212

1313
/// Provider for the activity item view model.
14-
final activityItemViewModelProvider = StateNotifierProvider.family<
14+
final activityItemViewModelProvider = NotifierProvider.family<
1515
ActivityItemViewModel,
1616
ActivityItemState,
17-
String>((ref, activityId) => ActivityItemViewModel(ref, activityId));
17+
String>((activityId) => ActivityItemViewModel(activityId));
1818

1919
/// View model for the activity item widget.
20-
class ActivityItemViewModel extends StateNotifier<ActivityItemState> {
20+
class ActivityItemViewModel extends Notifier<ActivityItemState> {
2121
final String activityId;
22-
final Ref ref;
2322
final TextEditingController commentController = TextEditingController();
2423

25-
ActivityItemViewModel(this.ref, this.activityId)
26-
: super(ActivityItemState.initial());
24+
ActivityItemViewModel(this.activityId);
25+
26+
@override
27+
ActivityItemState build() {
28+
return ActivityItemState.initial();
29+
}
2730

2831
/// Sets the activity in the state
2932
void setActivity(Activity activity) {

lib/presentation/common/activity/view_model/activity_list_view_model.dart

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,23 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
44
import 'state/activity_list_state.dart';
55

66
/// Provider for the activity list view model.
7-
final activityListWidgetViewModelProvider = StateNotifierProvider.family<
7+
final activityListWidgetViewModelProvider = NotifierProvider.family<
88
ActivityListWidgetViewModel,
99
ActivityListWidgetState,
10-
String>((ref, listId) => ActivityListWidgetViewModel(ref, listId));
10+
String>((listId) => ActivityListWidgetViewModel(listId));
1111

1212
/// View model for the activity item widget.
1313
class ActivityListWidgetViewModel
14-
extends StateNotifier<ActivityListWidgetState> {
15-
final Ref ref;
14+
extends Notifier<ActivityListWidgetState> {
1615
final String listId;
1716
final ScrollController scrollController = ScrollController();
1817

19-
ActivityListWidgetViewModel(this.ref, this.listId)
20-
: super(ActivityListWidgetState.initial());
18+
ActivityListWidgetViewModel(this.listId);
19+
20+
@override
21+
ActivityListWidgetState build() {
22+
return ActivityListWidgetState.initial();
23+
}
2124

2225
int calculateTotalElements(List<dynamic> listOfLists) {
2326
int totalElements =

lib/presentation/common/core/utils/activity_utils.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class ActivityUtils {
5454
return activities;
5555
}
5656

57-
static Future<void> updateActivity(Ref<Object?> ref, Activity updatedActivity,
57+
static Future<void> updateActivity(Ref ref, Activity updatedActivity,
5858
ActivityUpdateActionEnum action) async {
5959
await _updateActivityList(
6060
ref,
@@ -74,7 +74,7 @@ class ActivityUtils {
7474
}
7575
}
7676

77-
static Future<void> _updateActivityList(Ref<Object?> ref, String listType,
77+
static Future<void> _updateActivityList(Ref ref, String listType,
7878
Activity updatedActivity, ActivityUpdateActionEnum action) async {
7979
var data = ref
8080
.read(infiniteScrollListViewModelProvider(listType))

lib/presentation/common/core/widgets/view_model/infinite_scroll_list_view_model.dart

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,22 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
33
import 'state/infinite_scroll_list_state.dart';
44

55
/// Provider for the infinite scroll list view model.
6-
final infiniteScrollListViewModelProvider = StateNotifierProvider.family<
6+
final infiniteScrollListViewModelProvider = NotifierProvider.family<
77
InfiniteScrollListViewModel,
88
InfiniteScrollListState,
9-
String>((ref, listId) {
10-
return InfiniteScrollListViewModel(ref, listId);
11-
});
9+
String>((listId) => InfiniteScrollListViewModel(listId));
1210

1311
/// View model for the infinite scroll list interaction widget.
1412
class InfiniteScrollListViewModel
15-
extends StateNotifier<InfiniteScrollListState> {
13+
extends Notifier<InfiniteScrollListState> {
1614
final String listId;
17-
final Ref ref;
1815

19-
InfiniteScrollListViewModel(this.ref, this.listId)
20-
: super(InfiniteScrollListState.initial());
16+
InfiniteScrollListViewModel(this.listId);
17+
18+
@override
19+
InfiniteScrollListState build() {
20+
return InfiniteScrollListState.initial();
21+
}
2122

2223
/// Set isLoading in the state
2324
void setIsLoading(bool isLoading) {

lib/presentation/common/location/view_model/location_view_model.dart

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,17 @@ import '../../timer/viewmodel/timer_view_model.dart';
1010
import 'state/location_state.dart';
1111

1212
final locationViewModelProvider =
13-
StateNotifierProvider<LocationViewModel, LocationState>(
14-
(ref) => LocationViewModel(ref),
13+
NotifierProvider<LocationViewModel, LocationState>(
14+
() => LocationViewModel(),
1515
);
1616

1717
/// View model for managing location-related functionality.
18-
class LocationViewModel extends StateNotifier<LocationState> {
19-
final Ref ref;
18+
class LocationViewModel extends Notifier<LocationState> {
2019
StreamSubscription<Position>? _positionStream;
2120

22-
/// Creates a [LocationViewModel] instance.
23-
///
24-
/// The [ref] is a reference to the current provider reference.
25-
LocationViewModel(this.ref) : super(LocationState.initial());
26-
2721
@override
28-
Future<void> dispose() async {
29-
await cancelLocationStream();
30-
super.dispose();
22+
LocationState build() {
23+
return LocationState.initial();
3124
}
3225

3326
/// Marks the map as ready for interactions.
@@ -80,7 +73,7 @@ class LocationViewModel extends StateNotifier<LocationState> {
8073

8174
_positionStream ??=
8275
Geolocator.getPositionStream().listen((Position position) {
83-
if (mounted && _positionStream != null) {
76+
if (_positionStream != null) {
8477

8578
final timerProvider = ref.read(timerViewModelProvider.notifier);
8679
if (timerProvider.isTimerRunning() && timerProvider.hasTimerStarted()) {

lib/presentation/common/metrics/view_model/metrics_view_model.dart

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,25 @@ import 'state/metrics_state.dart';
1111
/// A provider for [MetricsViewModel] that creates an instance of [MetricsViewModel] automatically
1212
/// and disposes it when no longer needed.
1313
final metricsViewModelProvider =
14-
StateNotifierProvider.autoDispose<MetricsViewModel, MetricsState>(
15-
(ref) => MetricsViewModel(ref.container),
14+
NotifierProvider.autoDispose<MetricsViewModel, MetricsState>(
15+
() => MetricsViewModel(),
1616
);
1717

1818
/// The view model responsible for managing metrics state and calculations.
19-
class MetricsViewModel extends StateNotifier<MetricsState> {
20-
final ProviderContainer _container;
19+
class MetricsViewModel extends Notifier<MetricsState> {
2120
late final TextToSpeechService textToSpeech;
2221

23-
/// Creates an instance of [MetricsViewModel] with the specified [ProviderContainer].
24-
MetricsViewModel(this._container) : super(MetricsState.initial()) {
25-
textToSpeech = _container.read(textToSpeechService);
22+
@override
23+
MetricsState build() {
24+
textToSpeech = ref.read(textToSpeechService);
25+
return MetricsState.initial();
2626
}
2727

2828
/// Updates the metrics based on the current location and timer.
2929
Future<void> updateMetrics() async {
30-
final location = _container.read(locationViewModelProvider);
31-
final timer = _container.read(timerViewModelProvider.notifier);
32-
final timerState = _container.read(timerViewModelProvider);
30+
final location = ref.read(locationViewModelProvider);
31+
final timer = ref.read(timerViewModelProvider.notifier);
32+
final timerState = ref.read(timerViewModelProvider);
3333

3434
final lastDistanceInteger = state.distance.toInt();
3535

@@ -47,7 +47,7 @@ class MetricsViewModel extends StateNotifier<MetricsState> {
4747

4848
final newDistanceInteger = state.distance.toInt();
4949
if (newDistanceInteger != lastDistanceInteger) {
50-
final l10nConf = await _container.read(myAppProvider).getLocalizedConf();
50+
final l10nConf = await ref.read(myAppProvider).getLocalizedConf();
5151

5252
var textToSay = StringBuffer();
5353

lib/presentation/common/timer/viewmodel/timer_view_model.dart

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,19 @@ import '../../metrics/view_model/metrics_view_model.dart';
1111
import 'state/timer_state.dart';
1212

1313
final timerViewModelProvider =
14-
StateNotifierProvider.autoDispose<TimerViewModel, TimerState>(
15-
(ref) => TimerViewModel(ref),
14+
NotifierProvider.autoDispose<TimerViewModel, TimerState>(
15+
() => TimerViewModel(),
1616
);
1717

18-
class TimerViewModel extends StateNotifier<TimerState> {
19-
final Ref ref;
18+
class TimerViewModel extends Notifier<TimerState> {
2019
late Timer? timer;
2120
late final Stopwatch stopwatch = Stopwatch();
2221
final Duration _timerDuration = const Duration(seconds: 1);
2322

24-
/// Represents the view model for a timer.
25-
TimerViewModel(this.ref) : super(TimerState.initial());
23+
@override
24+
TimerState build() {
25+
return TimerState.initial();
26+
}
2627

2728
/// Starts the timer.
2829
void startTimer() {

lib/presentation/common/user/view_model/profile_picture_view_model.dart

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,20 @@ import '../../../../data/repositories/user_repository_impl.dart';
66
import 'state/profile_picture_state.dart';
77

88
/// Provider for the profile picture view model.
9-
final profilePictureViewModelProvider = StateNotifierProvider.family<
9+
final profilePictureViewModelProvider = NotifierProvider.family<
1010
ProfilePictureViewModel,
1111
ProfilePictureState,
12-
String>((ref, userId) => ProfilePictureViewModel(ref, userId));
12+
String>((userId) => ProfilePictureViewModel(userId));
1313

14-
class ProfilePictureViewModel extends StateNotifier<ProfilePictureState> {
15-
late final Ref ref;
14+
class ProfilePictureViewModel extends Notifier<ProfilePictureState> {
1615
final String userId;
1716

18-
ProfilePictureViewModel(this.ref, this.userId)
19-
: super(ProfilePictureState.initial());
17+
ProfilePictureViewModel(this.userId);
18+
19+
@override
20+
ProfilePictureState build() {
21+
return ProfilePictureState.initial();
22+
}
2023

2124
Future<void> getProfilePicture(String userId) async {
2225
if (state.loaded == false) {

0 commit comments

Comments
 (0)