@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
22import 'package:flutter_riverpod/flutter_riverpod.dart' ;
33import 'package:apidash_core/models/models.dart' ;
44import 'package:apidash/providers/settings_providers.dart' ;
5+ import 'package:apidash_design_system/apidash_design_system.dart' ;
56
67class 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 (
0 commit comments