40 lines
1.0 KiB
Dart
40 lines
1.0 KiB
Dart
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);
|
|
}
|
|
}
|