2026-09-05 20:09:39 +08:00
|
|
|
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
|
|
|
|
2026-09-05 20:09:39 +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> {
|
2026-09-05 20:09:39 +08:00
|
|
|
final key = uniqueId;
|
2026-02-02 10:14:13 +08:00
|
|
|
}
|