Skip to content

Commit e421650

Browse files
committed
fix: checkbox empty selection
1 parent 3a7ae71 commit e421650

File tree

3 files changed

+42
-27
lines changed

3 files changed

+42
-27
lines changed

lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,16 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
4040
ref.watch(selectedRequestModelProvider
4141
.select((value) => value?.requestHeaders?.length));
4242
var rH = ref.read(selectedRequestModelProvider)?.requestHeaders;
43-
rows = (rH == null || rH.isEmpty)
43+
bool isHeadersEmpty = rH == null || rH.isEmpty;
44+
rows = (isHeadersEmpty)
4445
? [
4546
kNameValueEmptyModel,
4647
]
4748
: rH;
48-
isRowEnabledList =
49-
ref.read(selectedRequestModelProvider)?.isHeaderEnabledList ??
50-
List.filled(rows.length, true, growable: true);
49+
isRowEnabledList = ref
50+
.read(selectedRequestModelProvider)
51+
?.isHeaderEnabledList ??
52+
List.filled(rows.length, isHeadersEmpty ? false : true, growable: true);
5153

5254
DaviModel<NameValueModel> model = DaviModel<NameValueModel>(
5355
rows: rows,
@@ -60,12 +62,17 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
6062
return CheckBox(
6163
keyId: "$selectedId-$idx-headers-c-$seed",
6264
value: isRowEnabledList[idx],
63-
onChanged: (value) {
64-
setState(() {
65-
isRowEnabledList[idx] = value!;
66-
});
67-
_onFieldChange(selectedId!);
68-
},
65+
onChanged: rows.length == 1 &&
66+
idx == 0 &&
67+
rows[idx].name.isEmpty &&
68+
rows[idx].value.isEmpty
69+
? null
70+
: (value) {
71+
setState(() {
72+
isRowEnabledList[idx] = value!;
73+
});
74+
_onFieldChange(selectedId!);
75+
},
6976
colorScheme: Theme.of(context).colorScheme,
7077
);
7178
},
@@ -85,7 +92,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
8592
rows[idx] = rows[idx].copyWith(name: value);
8693
if (idx == rows.length - 1) {
8794
rows.add(kNameValueEmptyModel);
88-
isRowEnabledList.add(true);
95+
isRowEnabledList.add(false);
8996
}
9097
_onFieldChange(selectedId!);
9198
},
@@ -116,7 +123,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
116123
rows[idx] = rows[idx].copyWith(value: value);
117124
if (idx == rows.length - 1) {
118125
rows.add(kNameValueEmptyModel);
119-
isRowEnabledList.add(true);
126+
isRowEnabledList.add(false);
120127
}
121128
_onFieldChange(selectedId!);
122129
},
@@ -140,7 +147,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
140147
rows = [
141148
kNameValueEmptyModel,
142149
];
143-
isRowEnabledList = [true];
150+
isRowEnabledList = [false];
144151
});
145152
} else {
146153
rows.removeAt(row.index);

lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,16 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
4141
ref.watch(selectedRequestModelProvider
4242
.select((value) => value?.requestParams?.length));
4343
var rP = ref.read(selectedRequestModelProvider)?.requestParams;
44-
rows = (rP == null || rP.isEmpty)
44+
bool isParamsEmpty = rP == null || rP.isEmpty;
45+
rows = (isParamsEmpty)
4546
? [
4647
kNameValueEmptyModel,
4748
]
4849
: rP;
49-
isRowEnabledList =
50-
ref.read(selectedRequestModelProvider)?.isParamEnabledList ??
51-
List.filled(rows.length, true, growable: true);
50+
isRowEnabledList = ref
51+
.read(selectedRequestModelProvider)
52+
?.isParamEnabledList ??
53+
List.filled(rows.length, isParamsEmpty ? false : true, growable: true);
5254

5355
DaviModel<NameValueModel> model = DaviModel<NameValueModel>(
5456
rows: rows,
@@ -61,12 +63,16 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
6163
return CheckBox(
6264
keyId: "$selectedId-$idx-params-c-$seed",
6365
value: isRowEnabledList[idx],
64-
onChanged: (value) {
65-
setState(() {
66-
isRowEnabledList[idx] = value!;
67-
});
68-
_onFieldChange(selectedId!);
69-
},
66+
onChanged: idx + 1 == rows.length &&
67+
rows[idx].name.isEmpty &&
68+
rows[idx].value.isEmpty
69+
? null
70+
: (value) {
71+
setState(() {
72+
isRowEnabledList[idx] = value!;
73+
});
74+
_onFieldChange(selectedId!);
75+
},
7076
colorScheme: Theme.of(context).colorScheme,
7177
);
7278
},
@@ -84,8 +90,9 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
8490
onChanged: (value) {
8591
rows[idx] = rows[idx].copyWith(name: value);
8692
if (idx == rows.length - 1) {
93+
isRowEnabledList[idx] = true;
8794
rows.add(kNameValueEmptyModel);
88-
isRowEnabledList.add(true);
95+
isRowEnabledList.add(false);
8996
}
9097
_onFieldChange(selectedId!);
9198
},
@@ -115,8 +122,9 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
115122
onChanged: (value) {
116123
rows[idx] = rows[idx].copyWith(value: value);
117124
if (idx == rows.length - 1) {
125+
isRowEnabledList[idx] = true;
118126
rows.add(kNameValueEmptyModel);
119-
isRowEnabledList.add(true);
127+
isRowEnabledList.add(false);
120128
}
121129
_onFieldChange(selectedId!);
122130
},
@@ -140,7 +148,7 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
140148
rows = [
141149
kNameValueEmptyModel,
142150
];
143-
isRowEnabledList = [true];
151+
isRowEnabledList = [false];
144152
});
145153
} else {
146154
rows.removeAt(row.index);

lib/widgets/checkbox.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
33
class CheckBox extends StatelessWidget {
44
final String keyId;
55
final bool value;
6-
final ValueChanged<bool?> onChanged;
6+
final ValueChanged<bool?>? onChanged;
77
final ColorScheme? colorScheme;
88
const CheckBox({
99
super.key,

0 commit comments

Comments
 (0)