mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: mobile database settings rework (#4016)
* feat: mobile database settings rework * chore: clean
This commit is contained in:
@ -1,7 +1,6 @@
|
||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||
import 'package:appflowy/mobile/presentation/database/card/card_property_edit/mobile_field_editor.dart';
|
||||
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
|
||||
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -53,10 +52,6 @@ class _MobileCreateRowFieldScreenState
|
||||
),
|
||||
body: MobileFieldEditor(
|
||||
viewId: widget.viewId,
|
||||
typeOptionLoader: FieldTypeOptionLoader(
|
||||
viewId: widget.viewId,
|
||||
field: widget.typeOption.field_2,
|
||||
),
|
||||
fieldController: widget.fieldController,
|
||||
field: widget.typeOption.field_2,
|
||||
),
|
||||
|
@ -4,7 +4,6 @@ import 'package:appflowy/mobile/presentation/database/card/card_property_edit/mo
|
||||
import 'package:appflowy/mobile/presentation/widgets/show_flowy_mobile_confirm_dialog.dart';
|
||||
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
|
||||
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
|
||||
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
|
||||
import 'package:appflowy/plugins/database_view/grid/application/row/row_detail_bloc.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -57,10 +56,6 @@ class CardPropertyEditScreen extends StatelessWidget {
|
||||
),
|
||||
body: MobileFieldEditor(
|
||||
viewId: cellContext.viewId,
|
||||
typeOptionLoader: FieldTypeOptionLoader(
|
||||
viewId: cellContext.viewId,
|
||||
field: cellContext.fieldInfo.field,
|
||||
),
|
||||
fieldController: fieldController,
|
||||
field: cellContext.fieldInfo.field,
|
||||
),
|
||||
|
@ -6,6 +6,9 @@ import 'package:appflowy/plugins/database_view/application/field/field_controlle
|
||||
import 'package:appflowy/plugins/database_view/application/field/field_editor_bloc.dart';
|
||||
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
|
||||
import 'package:appflowy/plugins/database_view/grid/application/row/row_detail_bloc.dart';
|
||||
import 'package:appflowy/plugins/database_view/widgets/setting/field_visibility_extension.dart';
|
||||
import 'package:appflowy/workspace/presentation/widgets/toggle/toggle.dart';
|
||||
import 'package:appflowy/workspace/presentation/widgets/toggle/toggle_style.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
||||
@ -17,18 +20,21 @@ class MobileFieldEditor extends StatelessWidget {
|
||||
const MobileFieldEditor({
|
||||
super.key,
|
||||
required this.viewId,
|
||||
required this.typeOptionLoader,
|
||||
required this.field,
|
||||
required this.fieldController,
|
||||
});
|
||||
|
||||
final String viewId;
|
||||
final FieldController fieldController;
|
||||
final FieldTypeOptionLoader typeOptionLoader;
|
||||
final FieldPB field;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final typeOptionLoader = FieldTypeOptionLoader(
|
||||
viewId: viewId,
|
||||
field: field,
|
||||
);
|
||||
|
||||
return BlocProvider(
|
||||
create: (context) {
|
||||
return FieldEditorBloc(
|
||||
@ -49,42 +55,35 @@ class MobileFieldEditor extends StatelessWidget {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// field name
|
||||
// TODO(yijing): improve hint text
|
||||
PropertyTitle(LocaleKeys.settings_user_name.tr()),
|
||||
BlocSelector<FieldEditorBloc, FieldEditorState, String>(
|
||||
selector: (state) => state.field.name,
|
||||
builder: (context, fieldName) {
|
||||
return MobileFieldNameTextField(
|
||||
text: fieldName,
|
||||
);
|
||||
},
|
||||
builder: (context, fieldName) =>
|
||||
MobileFieldNameTextField(text: fieldName),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child:
|
||||
PropertyTitle(LocaleKeys.grid_field_visibility.tr()),
|
||||
child: PropertyTitle(
|
||||
LocaleKeys.grid_field_visibility.tr(),
|
||||
),
|
||||
),
|
||||
VisibilitySwitch(
|
||||
isFieldHidden: state.field.visibility ==
|
||||
FieldVisibility.AlwaysHidden,
|
||||
onChanged: () {
|
||||
context.read<RowDetailBloc>().add(
|
||||
RowDetailEvent.toggleFieldVisibility(
|
||||
state.field.id,
|
||||
),
|
||||
);
|
||||
},
|
||||
isVisible:
|
||||
state.field.visibility?.isVisibleState() ?? false,
|
||||
onChanged: () => context.read<RowDetailBloc>().add(
|
||||
RowDetailEvent.toggleFieldVisibility(
|
||||
state.field.id,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const VSpace(8),
|
||||
// edit property type and settings
|
||||
if (!typeOptionLoader.field.isPrimary)
|
||||
MobileFieldTypeOptionEditor(
|
||||
dataController: dataController,
|
||||
),
|
||||
MobileFieldTypeOptionEditor(dataController: dataController),
|
||||
],
|
||||
),
|
||||
);
|
||||
@ -97,11 +96,11 @@ class MobileFieldEditor extends StatelessWidget {
|
||||
class VisibilitySwitch extends StatefulWidget {
|
||||
const VisibilitySwitch({
|
||||
super.key,
|
||||
required this.isFieldHidden,
|
||||
required this.isVisible,
|
||||
this.onChanged,
|
||||
});
|
||||
|
||||
final bool isFieldHidden;
|
||||
final bool isVisible;
|
||||
final Function? onChanged;
|
||||
|
||||
@override
|
||||
@ -109,18 +108,17 @@ class VisibilitySwitch extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _VisibilitySwitchState extends State<VisibilitySwitch> {
|
||||
late bool _isFieldHidden = widget.isFieldHidden;
|
||||
late bool _isVisible = widget.isVisible;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Switch.adaptive(
|
||||
activeColor: Theme.of(context).colorScheme.primary,
|
||||
value: !_isFieldHidden,
|
||||
onChanged: (bool value) {
|
||||
setState(() {
|
||||
_isFieldHidden = !_isFieldHidden;
|
||||
widget.onChanged?.call();
|
||||
});
|
||||
return Toggle(
|
||||
padding: EdgeInsets.zero,
|
||||
value: _isVisible,
|
||||
style: ToggleStyle.mobile,
|
||||
onChanged: (newValue) {
|
||||
widget.onChanged?.call();
|
||||
setState(() => _isVisible = newValue);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user