mirror of
https://github.com/foss42/apidash.git
synced 2025-08-06 13:51:20 +08:00
48 lines
1.6 KiB
Dart
48 lines
1.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import '../models/models.dart';
|
|
import '../services/services.dart' show hiveHandler, HiveHandler;
|
|
import '../consts.dart';
|
|
|
|
final codegenLanguageStateProvider = StateProvider<CodegenLanguage>((ref) =>
|
|
ref.watch(settingsProvider.select((value) => value.defaultCodeGenLang)));
|
|
|
|
final activeEnvironmentIdStateProvider = StateProvider<String?>((ref) =>
|
|
ref.watch(settingsProvider.select((value) => value.activeEnvironmentId)));
|
|
|
|
final StateNotifierProvider<ThemeStateNotifier, SettingsModel>
|
|
settingsProvider =
|
|
StateNotifierProvider((ref) => ThemeStateNotifier(hiveHandler));
|
|
|
|
class ThemeStateNotifier extends StateNotifier<SettingsModel> {
|
|
ThemeStateNotifier(this.hiveHandler) : super(const SettingsModel()) {
|
|
state = SettingsModel.fromJson(hiveHandler.settings);
|
|
}
|
|
final HiveHandler hiveHandler;
|
|
|
|
Future<void> update({
|
|
bool? isDark,
|
|
bool? alwaysShowCollectionPaneScrollbar,
|
|
Size? size,
|
|
Offset? offset,
|
|
String? defaultUriScheme,
|
|
CodegenLanguage? defaultCodeGenLang,
|
|
bool? saveResponses,
|
|
bool? promptBeforeClosing,
|
|
String? activeEnvironmentId,
|
|
}) async {
|
|
state = state.copyWith(
|
|
isDark: isDark,
|
|
alwaysShowCollectionPaneScrollbar: alwaysShowCollectionPaneScrollbar,
|
|
size: size,
|
|
offset: offset,
|
|
defaultUriScheme: defaultUriScheme,
|
|
defaultCodeGenLang: defaultCodeGenLang,
|
|
saveResponses: saveResponses,
|
|
promptBeforeClosing: promptBeforeClosing,
|
|
activeEnvironmentId: activeEnvironmentId,
|
|
);
|
|
await hiveHandler.saveSettings(state.toJson());
|
|
}
|
|
}
|