mirror of
https://github.com/foss42/apidash.git
synced 2025-08-06 13:51:20 +08:00
Default code generator settings
This commit is contained in:
@ -9,6 +9,7 @@ class SettingsModel {
|
||||
this.size,
|
||||
this.offset,
|
||||
this.defaultUriScheme = kDefaultUriScheme,
|
||||
this.defaultCodeGenLang = CodegenLanguage.curl,
|
||||
this.saveResponses = true});
|
||||
|
||||
final bool isDark;
|
||||
@ -16,6 +17,7 @@ class SettingsModel {
|
||||
final Size? size;
|
||||
final Offset? offset;
|
||||
final String defaultUriScheme;
|
||||
final CodegenLanguage defaultCodeGenLang;
|
||||
final bool saveResponses;
|
||||
|
||||
SettingsModel copyWith({
|
||||
@ -24,6 +26,7 @@ class SettingsModel {
|
||||
Size? size,
|
||||
Offset? offset,
|
||||
String? defaultUriScheme,
|
||||
CodegenLanguage? defaultCodeGenLang,
|
||||
bool? saveResponses,
|
||||
}) {
|
||||
return SettingsModel(
|
||||
@ -32,6 +35,7 @@ class SettingsModel {
|
||||
this.alwaysShowCollectionPaneScrollbar,
|
||||
size: size ?? this.size,
|
||||
defaultUriScheme: defaultUriScheme ?? this.defaultUriScheme,
|
||||
defaultCodeGenLang: defaultCodeGenLang ?? this.defaultCodeGenLang,
|
||||
offset: offset ?? this.offset,
|
||||
saveResponses: saveResponses ?? this.saveResponses,
|
||||
);
|
||||
@ -54,6 +58,16 @@ class SettingsModel {
|
||||
offset = Offset(dx, dy);
|
||||
}
|
||||
final defaultUriScheme = data["defaultUriScheme"] as String?;
|
||||
final defaultCodeGenLangStr = data["defaultCodeGenLang"] as String?;
|
||||
CodegenLanguage? defaultCodeGenLang;
|
||||
if (defaultCodeGenLangStr != null) {
|
||||
try {
|
||||
defaultCodeGenLang =
|
||||
CodegenLanguage.values.byName(defaultCodeGenLangStr);
|
||||
} catch (e) {
|
||||
// pass
|
||||
}
|
||||
}
|
||||
final saveResponses = data["saveResponses"] as bool?;
|
||||
|
||||
const sm = SettingsModel();
|
||||
@ -64,6 +78,7 @@ class SettingsModel {
|
||||
size: size,
|
||||
offset: offset,
|
||||
defaultUriScheme: defaultUriScheme,
|
||||
defaultCodeGenLang: defaultCodeGenLang,
|
||||
saveResponses: saveResponses,
|
||||
);
|
||||
}
|
||||
@ -77,6 +92,7 @@ class SettingsModel {
|
||||
"dx": offset?.dx,
|
||||
"dy": offset?.dy,
|
||||
"defaultUriScheme": defaultUriScheme,
|
||||
"defaultCodeGenLang": defaultCodeGenLang.name,
|
||||
"saveResponses": saveResponses,
|
||||
};
|
||||
}
|
||||
|
@ -1,7 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:apidash/models/models.dart' show SettingsModel;
|
||||
import 'package:apidash/services/services.dart' show hiveHandler, HiveHandler;
|
||||
import '../models/models.dart' show SettingsModel;
|
||||
import '../services/services.dart' show hiveHandler, HiveHandler;
|
||||
import '../consts.dart';
|
||||
|
||||
final codegenLanguageStateProvider = StateProvider<CodegenLanguage>((ref) =>
|
||||
ref.watch(settingsProvider.select((value) => value.defaultCodeGenLang)));
|
||||
|
||||
final StateNotifierProvider<ThemeStateNotifier, SettingsModel>
|
||||
settingsProvider =
|
||||
@ -19,6 +23,7 @@ class ThemeStateNotifier extends StateNotifier<SettingsModel> {
|
||||
Size? size,
|
||||
Offset? offset,
|
||||
String? defaultUriScheme,
|
||||
CodegenLanguage? defaultCodeGenLang,
|
||||
bool? saveResponses,
|
||||
}) async {
|
||||
state = state.copyWith(
|
||||
@ -27,6 +32,7 @@ class ThemeStateNotifier extends StateNotifier<SettingsModel> {
|
||||
size: size,
|
||||
offset: offset,
|
||||
defaultUriScheme: defaultUriScheme,
|
||||
defaultCodeGenLang: defaultCodeGenLang,
|
||||
saveResponses: saveResponses,
|
||||
);
|
||||
await hiveHandler.saveSettings(state.toJson());
|
||||
|
@ -1,4 +1,3 @@
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
final navRailIndexStateProvider = StateProvider<int>((ref) => 0);
|
||||
@ -8,5 +7,3 @@ final sentRequestIdStateProvider = StateProvider<String?>((ref) => null);
|
||||
final codePaneVisibleStateProvider = StateProvider<bool>((ref) => false);
|
||||
final saveDataStateProvider = StateProvider<bool>((ref) => false);
|
||||
final clearDataStateProvider = StateProvider<bool>((ref) => false);
|
||||
final codegenLanguageStateProvider =
|
||||
StateProvider<CodegenLanguage>((ref) => CodegenLanguage.curl);
|
||||
|
@ -75,6 +75,25 @@ class _SettingsPageState extends ConsumerState<SettingsPage> {
|
||||
);
|
||||
}).toList()),
|
||||
),
|
||||
ListTile(
|
||||
contentPadding: EdgeInsets.zero,
|
||||
hoverColor: kColorTransparent,
|
||||
title: const Text('Default Code Generator'),
|
||||
trailing: DropdownMenu(
|
||||
onSelected: (value) {
|
||||
ref
|
||||
.read(settingsProvider.notifier)
|
||||
.update(defaultCodeGenLang: value);
|
||||
},
|
||||
initialSelection: settings.defaultCodeGenLang,
|
||||
dropdownMenuEntries: CodegenLanguage.values
|
||||
.map<DropdownMenuEntry<CodegenLanguage>>((value) {
|
||||
return DropdownMenuEntry<CodegenLanguage>(
|
||||
value: value,
|
||||
label: value.label,
|
||||
);
|
||||
}).toList()),
|
||||
),
|
||||
CheckboxListTile(
|
||||
contentPadding: EdgeInsets.zero,
|
||||
title: const Text("Save Responses"),
|
||||
|
Reference in New Issue
Block a user