ponshu-room-lite/lib/providers/ui_experiment_provider.dart

40 lines
1.0 KiB
Dart
Raw Normal View History

import 'package:flutter_riverpod/flutter_riverpod.dart';
// UI実験設定クラス
class UiExperimentSettings {
final int gridColumns; // 2 or 3
final String fabAnimation; // 'rotate' or 'bounce'
const UiExperimentSettings({
this.gridColumns = 2,
this.fabAnimation = 'rotate',
});
UiExperimentSettings copyWith({
int? gridColumns,
String? fabAnimation,
}) {
return UiExperimentSettings(
gridColumns: gridColumns ?? this.gridColumns,
fabAnimation: fabAnimation ?? this.fabAnimation,
);
}
}
// Provider
final uiExperimentProvider = StateNotifierProvider<UiExperimentNotifier, UiExperimentSettings>(
(ref) => UiExperimentNotifier(),
);
class UiExperimentNotifier extends StateNotifier<UiExperimentSettings> {
UiExperimentNotifier() : super(const UiExperimentSettings());
void setGridColumns(int columns) {
state = state.copyWith(gridColumns: columns);
}
void setFabAnimation(String animation) {
state = state.copyWith(fabAnimation: animation);
}
}