Skip to content

Commit 830800f

Browse files
committed
fix: remove direct modification of providers
1 parent 21058af commit 830800f

File tree

4 files changed

+51
-30
lines changed

4 files changed

+51
-30
lines changed

lib/screens/settings_page.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ class SettingsPage extends ConsumerWidget {
6464
} else {
6565
showDialog(
6666
context: context,
67-
builder: (context) => const ProxySettingsDialog(),
67+
builder: (context) => ProxySettingsDialog(
68+
onUpdateProxySettings: (newProxy) {
69+
ref.read(settingsProvider.notifier).update(proxySettings: newProxy);
70+
},
71+
),
6872
);
6973
}
7074
},

lib/widgets/proxy_settings_dialog.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import 'package:apidash_core/models/models.dart';
44
import 'package:apidash/providers/settings_providers.dart';
55

66
class ProxySettingsDialog extends ConsumerStatefulWidget {
7-
const ProxySettingsDialog({super.key});
7+
final void Function(ProxySettings?) onUpdateProxySettings;
8+
const ProxySettingsDialog({super.key, required this.onUpdateProxySettings});
89

910
@override
1011
ConsumerState<ProxySettingsDialog> createState() =>
@@ -45,11 +46,11 @@ class _ProxySettingsDialogState extends ConsumerState<ProxySettingsDialog> {
4546
username: _usernameController.text.isEmpty ? null : _usernameController.text,
4647
password: _passwordController.text.isEmpty ? null : _passwordController.text,
4748
);
48-
ref.read(settingsProvider.notifier).update(proxySettings: newProxy);
49+
widget.onUpdateProxySettings(newProxy);
4950
Navigator.of(context).pop();
5051
}
5152
else{
52-
ref.read(settingsProvider.notifier).update(proxySettings: null);
53+
widget.onUpdateProxySettings(null);
5354
}
5455
}
5556

pubspec.lock

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,23 @@ packages:
55
dependency: transitive
66
description:
77
name: _fe_analyzer_shared
8-
sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57
8+
sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab"
99
url: "https://pub.dev"
1010
source: hosted
11-
version: "80.0.0"
11+
version: "76.0.0"
12+
_macros:
13+
dependency: transitive
14+
description: dart
15+
source: sdk
16+
version: "0.3.3"
1217
analyzer:
1318
dependency: transitive
1419
description:
1520
name: analyzer
16-
sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e"
21+
sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e"
1722
url: "https://pub.dev"
1823
source: hosted
19-
version: "7.3.0"
24+
version: "6.11.0"
2025
ansi_styles:
2126
dependency: transitive
2227
description:
@@ -390,22 +395,6 @@ packages:
390395
url: "https://pub.dev"
391396
source: hosted
392397
version: "1.3.2"
393-
fetch_api:
394-
dependency: transitive
395-
description:
396-
name: fetch_api
397-
sha256: "97f46c25b480aad74f7cc2ad7ccba2c5c6f08d008e68f95c1077286ce243d0e6"
398-
url: "https://pub.dev"
399-
source: hosted
400-
version: "2.2.0"
401-
fetch_client:
402-
dependency: transitive
403-
description:
404-
name: fetch_client
405-
sha256: "9666ee14536778474072245ed5cba07db81ae8eb5de3b7bf4a2d1e2c49696092"
406-
url: "https://pub.dev"
407-
source: hosted
408-
version: "1.1.2"
409398
ffi:
410399
dependency: transitive
411400
description:
@@ -977,7 +966,15 @@ packages:
977966
sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950
978967
url: "https://pub.dev"
979968
source: hosted
980-
version: "3.3.1"
969+
version: "3.2.0"
970+
macros:
971+
dependency: transitive
972+
description:
973+
name: macros
974+
sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
975+
url: "https://pub.dev"
976+
source: hosted
977+
version: "0.1.3-main.0"
981978
markdown:
982979
dependency: "direct main"
983980
description:
@@ -1983,5 +1980,5 @@ packages:
19831980
source: hosted
19841981
version: "2.2.2"
19851982
sdks:
1986-
dart: ">=3.7.0 <3.999.0"
1987-
flutter: ">=3.29.0"
1983+
dart: ">=3.7.0-0 <3.999.0"
1984+
flutter: ">=3.24.2"

test/widgets/proxy_settings_dialog_test.dart

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
22
import 'package:flutter_test/flutter_test.dart';
33
import 'package:flutter_riverpod/flutter_riverpod.dart';
44
import 'package:apidash/widgets/proxy_settings_dialog.dart';
5+
import 'package:apidash/providers/settings_providers.dart';
56

67
void main() {
78
testWidgets('ProxySettingsDialog shows correctly', (WidgetTester tester) async {
@@ -14,7 +15,13 @@ void main() {
1415
onPressed: () {
1516
showDialog(
1617
context: context,
17-
builder: (context) => const ProxySettingsDialog(),
18+
builder: (context) => ProxySettingsDialog(
19+
onUpdateProxySettings: (newProxy) {
20+
final ref = ProviderScope.containerOf(context);
21+
final notifier = ref.read(settingsProvider.notifier);
22+
notifier.update(proxySettings: newProxy);
23+
},
24+
),
1825
);
1926
},
2027
child: const Text('Show Dialog'),
@@ -48,7 +55,13 @@ void main() {
4855
onPressed: () {
4956
showDialog(
5057
context: context,
51-
builder: (context) => const ProxySettingsDialog(),
58+
builder: (context) => ProxySettingsDialog(
59+
onUpdateProxySettings: (newProxy) {
60+
final ref = ProviderScope.containerOf(context);
61+
final notifier = ref.read(settingsProvider.notifier);
62+
notifier.update(proxySettings: newProxy);
63+
},
64+
),
5265
);
5366
},
5467
child: const Text('Show Dialog'),
@@ -87,7 +100,13 @@ void main() {
87100
onPressed: () {
88101
showDialog(
89102
context: context,
90-
builder: (context) => const ProxySettingsDialog(),
103+
builder: (context) => ProxySettingsDialog(
104+
onUpdateProxySettings: (newProxy) {
105+
final ref = ProviderScope.containerOf(context);
106+
final notifier = ref.read(settingsProvider.notifier);
107+
notifier.update(proxySettings: newProxy);
108+
},
109+
),
91110
);
92111
},
93112
child: const Text('Show Dialog'),

0 commit comments

Comments
 (0)