@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
2
2
import 'package:flutter_riverpod/flutter_riverpod.dart' ;
3
3
import 'package:apidash_core/models/models.dart' ;
4
4
import 'package:apidash/providers/settings_providers.dart' ;
5
+ import 'package:apidash_design_system/apidash_design_system.dart' ;
5
6
6
7
class ProxySettingsDialog extends ConsumerStatefulWidget {
7
8
final void Function (ProxySettings ? ) onUpdateProxySettings;
@@ -17,6 +18,7 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
17
18
late TextEditingController _portController;
18
19
late TextEditingController _usernameController;
19
20
late TextEditingController _passwordController;
21
+ late List <GenericFormField > _formFields;
20
22
21
23
@override
22
24
void initState () {
@@ -27,6 +29,36 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
27
29
_portController = TextEditingController (text: proxy? .port ?? '' );
28
30
_usernameController = TextEditingController (text: proxy? .username ?? '' );
29
31
_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
+ ];
30
62
}
31
63
32
64
@override
@@ -51,6 +83,7 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
51
83
}
52
84
else {
53
85
widget.onUpdateProxySettings (null );
86
+ Navigator .of (context).pop ();
54
87
}
55
88
}
56
89
@@ -59,41 +92,7 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
59
92
return AlertDialog (
60
93
title: const Text ('Proxy Settings' ),
61
94
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),
97
96
),
98
97
actions: [
99
98
TextButton (
0 commit comments