fix: changing visibility of property (#4032)

* fix: changing visibility of property

* fix: null aware ternary
This commit is contained in:
Mathias Mogensen 2023-11-28 05:45:50 +02:00 committed by GitHub
parent 1e6762b424
commit a9ea8fd159
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -49,7 +49,8 @@ class MobileFieldEditor extends StatelessWidget {
// for field type edit option
final dataController =
context.read<FieldEditorBloc>().typeOptionController;
final fieldInfoVisibility =
fieldController.getField(field.id)?.visibility;
return Padding(
padding: const EdgeInsets.all(16),
child: Column(
@ -70,8 +71,9 @@ class MobileFieldEditor extends StatelessWidget {
),
),
VisibilitySwitch(
isVisible:
state.field.visibility?.isVisibleState() ?? false,
isFieldHidden: !(fieldInfoVisibility != null
? fieldInfoVisibility.isVisibleState()
: field.visibility),
onChanged: () => context.read<RowDetailBloc>().add(
RowDetailEvent.toggleFieldVisibility(
state.field.id,
@ -96,11 +98,11 @@ class MobileFieldEditor extends StatelessWidget {
class VisibilitySwitch extends StatefulWidget {
const VisibilitySwitch({
super.key,
required this.isVisible,
required this.isFieldHidden,
this.onChanged,
});
final bool isVisible;
final bool isFieldHidden;
final Function? onChanged;
@override
@ -108,17 +110,19 @@ class VisibilitySwitch extends StatefulWidget {
}
class _VisibilitySwitchState extends State<VisibilitySwitch> {
late bool _isVisible = widget.isVisible;
late bool _isFieldHidden = widget.isFieldHidden;
@override
Widget build(BuildContext context) {
return Toggle(
padding: EdgeInsets.zero,
value: _isVisible,
value: !_isFieldHidden,
style: ToggleStyle.mobile,
onChanged: (newValue) {
widget.onChanged?.call();
setState(() => _isVisible = newValue);
onChanged: (_) {
setState(() {
_isFieldHidden = !_isFieldHidden;
widget.onChanged?.call();
});
},
);
}