fix: checkbox empty selection

This commit is contained in:
DenserMeerkat
2024-03-16 16:29:35 +05:30
parent 3a7ae71796
commit e421650617
3 changed files with 42 additions and 27 deletions

View File

@ -40,14 +40,16 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
ref.watch(selectedRequestModelProvider
.select((value) => value?.requestHeaders?.length));
var rH = ref.read(selectedRequestModelProvider)?.requestHeaders;
rows = (rH == null || rH.isEmpty)
bool isHeadersEmpty = rH == null || rH.isEmpty;
rows = (isHeadersEmpty)
? [
kNameValueEmptyModel,
]
: rH;
isRowEnabledList =
ref.read(selectedRequestModelProvider)?.isHeaderEnabledList ??
List.filled(rows.length, true, growable: true);
isRowEnabledList = ref
.read(selectedRequestModelProvider)
?.isHeaderEnabledList ??
List.filled(rows.length, isHeadersEmpty ? false : true, growable: true);
DaviModel<NameValueModel> model = DaviModel<NameValueModel>(
rows: rows,
@ -60,12 +62,17 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
return CheckBox(
keyId: "$selectedId-$idx-headers-c-$seed",
value: isRowEnabledList[idx],
onChanged: (value) {
setState(() {
isRowEnabledList[idx] = value!;
});
_onFieldChange(selectedId!);
},
onChanged: rows.length == 1 &&
idx == 0 &&
rows[idx].name.isEmpty &&
rows[idx].value.isEmpty
? null
: (value) {
setState(() {
isRowEnabledList[idx] = value!;
});
_onFieldChange(selectedId!);
},
colorScheme: Theme.of(context).colorScheme,
);
},
@ -85,7 +92,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
rows[idx] = rows[idx].copyWith(name: value);
if (idx == rows.length - 1) {
rows.add(kNameValueEmptyModel);
isRowEnabledList.add(true);
isRowEnabledList.add(false);
}
_onFieldChange(selectedId!);
},
@ -116,7 +123,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
rows[idx] = rows[idx].copyWith(value: value);
if (idx == rows.length - 1) {
rows.add(kNameValueEmptyModel);
isRowEnabledList.add(true);
isRowEnabledList.add(false);
}
_onFieldChange(selectedId!);
},
@ -140,7 +147,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
rows = [
kNameValueEmptyModel,
];
isRowEnabledList = [true];
isRowEnabledList = [false];
});
} else {
rows.removeAt(row.index);

View File

@ -41,14 +41,16 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
ref.watch(selectedRequestModelProvider
.select((value) => value?.requestParams?.length));
var rP = ref.read(selectedRequestModelProvider)?.requestParams;
rows = (rP == null || rP.isEmpty)
bool isParamsEmpty = rP == null || rP.isEmpty;
rows = (isParamsEmpty)
? [
kNameValueEmptyModel,
]
: rP;
isRowEnabledList =
ref.read(selectedRequestModelProvider)?.isParamEnabledList ??
List.filled(rows.length, true, growable: true);
isRowEnabledList = ref
.read(selectedRequestModelProvider)
?.isParamEnabledList ??
List.filled(rows.length, isParamsEmpty ? false : true, growable: true);
DaviModel<NameValueModel> model = DaviModel<NameValueModel>(
rows: rows,
@ -61,12 +63,16 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
return CheckBox(
keyId: "$selectedId-$idx-params-c-$seed",
value: isRowEnabledList[idx],
onChanged: (value) {
setState(() {
isRowEnabledList[idx] = value!;
});
_onFieldChange(selectedId!);
},
onChanged: idx + 1 == rows.length &&
rows[idx].name.isEmpty &&
rows[idx].value.isEmpty
? null
: (value) {
setState(() {
isRowEnabledList[idx] = value!;
});
_onFieldChange(selectedId!);
},
colorScheme: Theme.of(context).colorScheme,
);
},
@ -84,8 +90,9 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
onChanged: (value) {
rows[idx] = rows[idx].copyWith(name: value);
if (idx == rows.length - 1) {
isRowEnabledList[idx] = true;
rows.add(kNameValueEmptyModel);
isRowEnabledList.add(true);
isRowEnabledList.add(false);
}
_onFieldChange(selectedId!);
},
@ -115,8 +122,9 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
onChanged: (value) {
rows[idx] = rows[idx].copyWith(value: value);
if (idx == rows.length - 1) {
isRowEnabledList[idx] = true;
rows.add(kNameValueEmptyModel);
isRowEnabledList.add(true);
isRowEnabledList.add(false);
}
_onFieldChange(selectedId!);
},
@ -140,7 +148,7 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
rows = [
kNameValueEmptyModel,
];
isRowEnabledList = [true];
isRowEnabledList = [false];
});
} else {
rows.removeAt(row.index);

View File

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
class CheckBox extends StatelessWidget {
final String keyId;
final bool value;
final ValueChanged<bool?> onChanged;
final ValueChanged<bool?>? onChanged;
final ColorScheme? colorScheme;
const CheckBox({
super.key,