Files

34 lines
669 B
Dart
Raw Permalink Normal View History

import 'package:flutter/widgets.dart';
2025-02-09 18:39:38 +08:00
import 'package:riverpod/riverpod.dart';
2025-07-31 17:09:18 +08:00
import 'package:riverpod_annotation/riverpod_annotation.dart';
2025-02-09 18:39:38 +08:00
import 'snowflake.dart';
2026-02-02 10:14:13 +08:00
2025-07-31 17:09:18 +08:00
mixin AutoDisposeNotifierMixin<T> on AnyNotifier<T, T> {
2025-12-16 11:23:09 +08:00
T get value => state;
2025-02-09 18:39:38 +08:00
set value(T value) {
2025-12-16 11:23:09 +08:00
state = value;
}
2026-02-02 10:14:13 +08:00
void update(T Function(T) builder) {
2025-12-16 11:23:09 +08:00
final res = builder(value);
2026-02-02 10:14:13 +08:00
if (res == value) {
2025-12-16 11:23:09 +08:00
return;
}
value = res;
2025-10-14 15:13:52 +08:00
}
2025-02-09 18:39:38 +08:00
}
2025-12-16 11:23:09 +08:00
mixin AsyncNotifierMixin<T> on AnyNotifier<AsyncValue<T>, T> {
2025-07-31 17:09:18 +08:00
T get value;
set value(T value) {
2025-12-16 11:23:09 +08:00
state = AsyncData(value);
2025-07-31 17:09:18 +08:00
}
}
2026-02-02 10:14:13 +08:00
mixin UniqueKeyStateMixin<T extends StatefulWidget> on State<T> {
final key = uniqueId;
2026-02-02 10:14:13 +08:00
}