Skip to content

Commit 57e6947

Browse files
committed
fix: implement generic form for proxy configuration
1 parent 005f361 commit 57e6947

File tree

2 files changed

+35
-35
lines changed

2 files changed

+35
-35
lines changed

lib/widgets/proxy_settings_dialog.dart

+34-35
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
22
import 'package:flutter_riverpod/flutter_riverpod.dart';
33
import 'package:apidash_core/models/models.dart';
44
import 'package:apidash/providers/settings_providers.dart';
5+
import 'package:apidash_design_system/apidash_design_system.dart';
56

67
class ProxySettingsDialog extends ConsumerStatefulWidget {
78
final void Function(ProxySettings?) onUpdateProxySettings;
@@ -17,6 +18,7 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
1718
late TextEditingController _portController;
1819
late TextEditingController _usernameController;
1920
late TextEditingController _passwordController;
21+
late List<GenericFormField> _formFields;
2022

2123
@override
2224
void initState() {
@@ -27,6 +29,36 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
2729
_portController = TextEditingController(text: proxy?.port ?? '');
2830
_usernameController = TextEditingController(text: proxy?.username ?? '');
2931
_passwordController = TextEditingController(text: proxy?.password ?? '');
32+
33+
_initFormFields();
34+
}
35+
36+
void _initFormFields() {
37+
_formFields = [
38+
GenericFormField(
39+
controller: _hostController,
40+
labelText: 'Proxy Host',
41+
hintText: 'e.g., localhost',
42+
required: true,
43+
),
44+
GenericFormField(
45+
controller: _portController,
46+
labelText: 'Proxy Port',
47+
hintText: 'e.g., 8080',
48+
required: true,
49+
),
50+
GenericFormField(
51+
controller: _usernameController,
52+
labelText: 'Username',
53+
hintText: 'Optional',
54+
),
55+
GenericFormField(
56+
controller: _passwordController,
57+
labelText: 'Password',
58+
hintText: 'Optional',
59+
obscureText: true,
60+
),
61+
];
3062
}
3163

3264
@override
@@ -51,6 +83,7 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
5183
}
5284
else{
5385
widget.onUpdateProxySettings(null);
86+
Navigator.of(context).pop();
5487
}
5588
}
5689

@@ -59,41 +92,7 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
5992
return AlertDialog(
6093
title: const Text('Proxy Settings'),
6194
content: SingleChildScrollView(
62-
child: Column(
63-
mainAxisSize: MainAxisSize.min,
64-
children: [
65-
TextField(
66-
controller: _hostController,
67-
decoration: const InputDecoration(
68-
labelText: 'Proxy Host',
69-
hintText: 'e.g., localhost',
70-
),
71-
),
72-
const SizedBox(height: 8),
73-
TextField(
74-
controller: _portController,
75-
decoration: const InputDecoration(
76-
labelText: 'Proxy Port',
77-
hintText: 'e.g., 8080',
78-
),
79-
),
80-
const SizedBox(height: 8),
81-
TextField(
82-
controller: _usernameController,
83-
decoration: const InputDecoration(
84-
labelText: 'Username (Optional)',
85-
),
86-
),
87-
const SizedBox(height: 8),
88-
TextField(
89-
controller: _passwordController,
90-
decoration: const InputDecoration(
91-
labelText: 'Password (Optional)',
92-
),
93-
obscureText: true,
94-
),
95-
],
96-
),
95+
child: GenericForm(fields: _formFields),
9796
),
9897
actions: [
9998
TextButton(

packages/apidash_design_system/lib/widgets/widgets.dart

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export 'button_text.dart';
44
export 'checkbox.dart';
55
export 'decoration_input_textfield.dart';
66
export 'dropdown.dart';
7+
export 'form_generic.dart';
78
export 'popup_menu.dart';
89
export 'snackbar.dart';
910
export 'textfield_outlined.dart';

0 commit comments

Comments
 (0)