Files
apidash/lib/providers/settings_providers.dart
2024-12-15 07:37:18 +05:30

52 lines
1.8 KiB
Dart

import 'package:apidash_core/apidash_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../models/models.dart';
import '../services/services.dart';
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());
class ThemeStateNotifier extends StateNotifier<SettingsModel> {
ThemeStateNotifier({this.settingsModel}) : super(const SettingsModel()) {
state = settingsModel ?? const SettingsModel();
}
final SettingsModel? settingsModel;
Future<void> update({
bool? isDark,
bool? alwaysShowCollectionPaneScrollbar,
Size? size,
Offset? offset,
SupportedUriSchemes? defaultUriScheme,
CodegenLanguage? defaultCodeGenLang,
bool? saveResponses,
bool? promptBeforeClosing,
String? activeEnvironmentId,
HistoryRetentionPeriod? historyRetentionPeriod,
String? workspaceFolderPath,
}) async {
state = state.copyWith(
isDark: isDark,
alwaysShowCollectionPaneScrollbar: alwaysShowCollectionPaneScrollbar,
size: size,
offset: offset,
defaultUriScheme: defaultUriScheme,
defaultCodeGenLang: defaultCodeGenLang,
saveResponses: saveResponses,
promptBeforeClosing: promptBeforeClosing,
activeEnvironmentId: activeEnvironmentId,
historyRetentionPeriod: historyRetentionPeriod,
workspaceFolderPath: workspaceFolderPath,
);
await setSettingsToSharedPrefs(state);
}
}