mirror of
https://github.com/foss42/apidash.git
synced 2025-06-01 06:42:07 +08:00
Refactoring
This commit is contained in:
@ -1,4 +1,3 @@
|
||||
import 'package:apidash/utils/convert_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:apidash/providers/providers.dart';
|
||||
@ -48,82 +47,3 @@ class _CodePaneState extends ConsumerState<CodePane> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ViewCodePane extends StatefulWidget {
|
||||
const ViewCodePane({
|
||||
super.key,
|
||||
required this.code,
|
||||
required this.codegenLanguage,
|
||||
required this.onChangedCodegenLanguage,
|
||||
});
|
||||
|
||||
final String code;
|
||||
final CodegenLanguage codegenLanguage;
|
||||
final Function(CodegenLanguage?) onChangedCodegenLanguage;
|
||||
|
||||
@override
|
||||
State<ViewCodePane> createState() => _ViewCodePaneState();
|
||||
}
|
||||
|
||||
class _ViewCodePaneState extends State<ViewCodePane> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var codeTheme = Theme.of(context).brightness == Brightness.light
|
||||
? kLightCodeTheme
|
||||
: kDarkCodeTheme;
|
||||
final textContainerdecoration = BoxDecoration(
|
||||
color: Color.alphaBlend(
|
||||
(Theme.of(context).brightness == Brightness.dark
|
||||
? Theme.of(context).colorScheme.onPrimaryContainer
|
||||
: Theme.of(context).colorScheme.primaryContainer)
|
||||
.withOpacity(kForegroundOpacity),
|
||||
Theme.of(context).colorScheme.surface),
|
||||
border: Border.all(color: Theme.of(context).colorScheme.surfaceVariant),
|
||||
borderRadius: kBorderRadius8,
|
||||
);
|
||||
|
||||
return Padding(
|
||||
padding: kP10,
|
||||
child: Column(
|
||||
children: [
|
||||
SizedBox(
|
||||
height: kHeaderHeight,
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
"Code",
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
),
|
||||
DropdownButtonCodegenLanguage(
|
||||
codegenLanguage: widget.codegenLanguage,
|
||||
onChanged: widget.onChangedCodegenLanguage,
|
||||
),
|
||||
CopyButton(toCopy: widget.code),
|
||||
SaveInDownloadsButton(
|
||||
content: stringToBytes(widget.code),
|
||||
mimeType: "application/vnd.dart",
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
kVSpacer10,
|
||||
Expanded(
|
||||
child: Container(
|
||||
width: double.maxFinite,
|
||||
padding: kP8,
|
||||
decoration: textContainerdecoration,
|
||||
child: CodeGenPreviewer(
|
||||
code: widget.code,
|
||||
theme: codeTheme,
|
||||
language: 'dart',
|
||||
textStyle: kCodeStyle,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
89
lib/widgets/view_codepane.dart
Normal file
89
lib/widgets/view_codepane.dart
Normal file
@ -0,0 +1,89 @@
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../utils/utils.dart';
|
||||
import 'widgets.dart'
|
||||
show
|
||||
DropdownButtonCodegenLanguage,
|
||||
CopyButton,
|
||||
SaveInDownloadsButton,
|
||||
CodeGenPreviewer;
|
||||
|
||||
class ViewCodePane extends StatefulWidget {
|
||||
const ViewCodePane({
|
||||
super.key,
|
||||
required this.code,
|
||||
required this.codegenLanguage,
|
||||
required this.onChangedCodegenLanguage,
|
||||
});
|
||||
|
||||
final String code;
|
||||
final CodegenLanguage codegenLanguage;
|
||||
final Function(CodegenLanguage?) onChangedCodegenLanguage;
|
||||
|
||||
@override
|
||||
State<ViewCodePane> createState() => _ViewCodePaneState();
|
||||
}
|
||||
|
||||
class _ViewCodePaneState extends State<ViewCodePane> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var codeTheme = Theme.of(context).brightness == Brightness.light
|
||||
? kLightCodeTheme
|
||||
: kDarkCodeTheme;
|
||||
final textContainerdecoration = BoxDecoration(
|
||||
color: Color.alphaBlend(
|
||||
(Theme.of(context).brightness == Brightness.dark
|
||||
? Theme.of(context).colorScheme.onPrimaryContainer
|
||||
: Theme.of(context).colorScheme.primaryContainer)
|
||||
.withOpacity(kForegroundOpacity),
|
||||
Theme.of(context).colorScheme.surface),
|
||||
border: Border.all(color: Theme.of(context).colorScheme.surfaceVariant),
|
||||
borderRadius: kBorderRadius8,
|
||||
);
|
||||
|
||||
return Padding(
|
||||
padding: kP10,
|
||||
child: Column(
|
||||
children: [
|
||||
SizedBox(
|
||||
height: kHeaderHeight,
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
"Code",
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
),
|
||||
DropdownButtonCodegenLanguage(
|
||||
codegenLanguage: widget.codegenLanguage,
|
||||
onChanged: widget.onChangedCodegenLanguage,
|
||||
),
|
||||
CopyButton(toCopy: widget.code),
|
||||
SaveInDownloadsButton(
|
||||
content: stringToBytes(widget.code),
|
||||
mimeType: "application/vnd.dart",
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
kVSpacer10,
|
||||
Expanded(
|
||||
child: Container(
|
||||
width: double.maxFinite,
|
||||
padding: kP8,
|
||||
decoration: textContainerdecoration,
|
||||
child: CodeGenPreviewer(
|
||||
code: widget.code,
|
||||
theme: codeTheme,
|
||||
language: 'dart',
|
||||
textStyle: kCodeStyle,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -16,3 +16,4 @@ export 'request_widgets.dart';
|
||||
export 'response_widgets.dart';
|
||||
export 'snackbars.dart';
|
||||
export 'markdown.dart';
|
||||
export 'view_codepane.dart';
|
||||
|
@ -1,6 +1,5 @@
|
||||
import 'package:apidash/codegen/kotlin/pkg_okhttp.dart';
|
||||
import 'package:apidash/models/kvrow_model.dart';
|
||||
import 'package:apidash/models/request_model.dart';
|
||||
import 'package:apidash/models/models.dart' show KVRow, RequestModel;
|
||||
import 'package:test/test.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import 'package:apidash/screens/home_page/editor_pane/details_card/code_pane.dart';
|
||||
import 'package:apidash/widgets/widgets.dart'
|
||||
show ViewCodePane, CodeGenPreviewer;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:apidash/widgets/codegen_previewer.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import '../test_consts.dart';
|
||||
|
||||
|
Reference in New Issue
Block a user