mirror of
https://github.com/foss42/apidash.git
synced 2025-05-31 06:08:09 +08:00
Language Dropdown added.
This commit is contained in:
@ -228,6 +228,14 @@ const kMethodsWithBody = [
|
||||
const kDefaultHttpMethod = HTTPVerb.get;
|
||||
const kDefaultContentType = ContentType.json;
|
||||
|
||||
enum CodegenLanguage {
|
||||
dartHttp("Dart - http"),
|
||||
kotlinOkHttp("Kotlin - OkHttp");
|
||||
|
||||
const CodegenLanguage(this.label);
|
||||
final String label;
|
||||
}
|
||||
|
||||
const JsonEncoder kEncoder = JsonEncoder.withIndent(' ');
|
||||
const LineSplitter kSplitter = LineSplitter();
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
final navRailIndexStateProvider = StateProvider<int?>((ref) => 0);
|
||||
@ -7,3 +8,4 @@ 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.dartHttp);
|
@ -1,7 +1,10 @@
|
||||
import 'package:apidash/widgets/dropdowns.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:highlighter/highlighter.dart' show highlight;
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart';
|
||||
import '../providers/ui_providers.dart';
|
||||
import 'code_previewer.dart' show convert;
|
||||
import 'buttons.dart';
|
||||
|
||||
@ -144,6 +147,7 @@ class _ViewCodePaneState extends State<ViewCodePane> {
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
),
|
||||
const DropdownButtonCodeCodegenLanguage(),
|
||||
CopyButton(toCopy: widget.code),
|
||||
SaveInDownloadsButton(
|
||||
content: stringToBytes(widget.code),
|
||||
@ -171,3 +175,26 @@ class _ViewCodePaneState extends State<ViewCodePane> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class DropdownButtonCodeCodegenLanguage extends ConsumerStatefulWidget {
|
||||
const DropdownButtonCodeCodegenLanguage({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
ConsumerState createState() => _DropdownButtonCodeCodegenLanguageState();
|
||||
}
|
||||
|
||||
class _DropdownButtonCodeCodegenLanguageState
|
||||
extends ConsumerState<DropdownButtonCodeCodegenLanguage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final requestCodeLanguage = ref.watch(codegenLanguageStateProvider);
|
||||
return DropdownButtonCodegenLanguage(
|
||||
codegenLanguage: requestCodeLanguage,
|
||||
onChanged: (CodegenLanguage? value) {
|
||||
ref.read(codegenLanguageStateProvider.notifier).state = value!;
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
@ -109,3 +109,55 @@ class _DropdownButtonContentTypeState extends State<DropdownButtonContentType> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class DropdownButtonCodegenLanguage extends StatefulWidget {
|
||||
const DropdownButtonCodegenLanguage({
|
||||
Key? key,
|
||||
this.codegenLanguage,
|
||||
this.onChanged,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<DropdownButtonCodegenLanguage> createState() =>
|
||||
_DropdownButtonCodegenLanguageState();
|
||||
final CodegenLanguage? codegenLanguage;
|
||||
final void Function(CodegenLanguage?)? onChanged;
|
||||
}
|
||||
|
||||
class _DropdownButtonCodegenLanguageState
|
||||
extends State<DropdownButtonCodegenLanguage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final surfaceColor = Theme.of(context).colorScheme.surface;
|
||||
return DropdownButton<CodegenLanguage>(
|
||||
focusColor: surfaceColor,
|
||||
value: widget.codegenLanguage,
|
||||
icon: const Icon(
|
||||
Icons.unfold_more_rounded,
|
||||
size: 16,
|
||||
),
|
||||
elevation: 4,
|
||||
style: kCodeStyle.copyWith(
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
underline: Container(
|
||||
height: 0,
|
||||
),
|
||||
onChanged: widget.onChanged,
|
||||
borderRadius: kBorderRadius12,
|
||||
items: CodegenLanguage.values
|
||||
.map<DropdownMenuItem<CodegenLanguage>>((CodegenLanguage value) {
|
||||
return DropdownMenuItem<CodegenLanguage>(
|
||||
value: value,
|
||||
child: Padding(
|
||||
padding: kPs8,
|
||||
child: Text(
|
||||
value.label,
|
||||
style: kTextStyleButton,
|
||||
),
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user