mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
Fix: mobile improvements (#4480)
* fix: copy on notifications screen is caught off * fix: mobile event screen no events copy * fix: hide notifications toggle from settings * fix: cannot change type of field in grid
This commit is contained in:
parent
827e41348b
commit
8105da1c2b
@ -179,7 +179,7 @@ SPEC CHECKSUMS:
|
||||
file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de
|
||||
flowy_infra_ui: 0455e1fa8c51885aa1437848e361e99419f34ebc
|
||||
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
||||
fluttertoast: fafc4fa4d01a6a9e4f772ecd190ffa525e9e2d9c
|
||||
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
|
||||
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
|
||||
@ -202,4 +202,4 @@ SPEC CHECKSUMS:
|
||||
|
||||
PODFILE CHECKSUM: 8c681999c7764593c94846b2a64b44d86f7a27ac
|
||||
|
||||
COCOAPODS: 1.12.1
|
||||
COCOAPODS: 1.14.3
|
||||
|
@ -1,3 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||
import 'package:appflowy/mobile/presentation/base/app_bar_actions.dart';
|
||||
import 'package:appflowy/mobile/presentation/database/field/mobile_field_type_option_editor.dart';
|
||||
@ -7,7 +9,6 @@ import 'package:appflowy/plugins/database/application/field/field_service.dart';
|
||||
import 'package:appflowy/plugins/database/widgets/setting/field_visibility_extension.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
class MobileEditPropertyScreen extends StatefulWidget {
|
||||
@ -75,7 +76,7 @@ class _MobileEditPropertyScreenState extends State<MobileEditPropertyScreen> {
|
||||
await fieldService.updateField(name: newField.name);
|
||||
}
|
||||
|
||||
if (newField.type != field.type) {
|
||||
if (newField.type != widget.field.fieldType) {
|
||||
await fieldService.updateFieldType(fieldType: newField.type);
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:appflowy/mobile/presentation/bottom_sheet/bottom_sheet.dart';
|
||||
import 'package:appflowy/plugins/database/application/field/field_controller.dart';
|
||||
import 'package:appflowy/plugins/database/application/field/field_info.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
import 'mobile_create_field_screen.dart';
|
||||
|
@ -202,9 +202,10 @@ class _FieldOptionEditorState extends State<FieldOptionEditor> {
|
||||
() {
|
||||
if (widget.mode == FieldOptionMode.add) {
|
||||
controller.text = type.i18n;
|
||||
_updateOptionValues(name: type.i18n);
|
||||
_updateOptionValues(name: type.i18n, type: type);
|
||||
} else {
|
||||
_updateOptionValues(type: type);
|
||||
}
|
||||
_updateOptionValues(type: type);
|
||||
},
|
||||
),
|
||||
),
|
||||
|
@ -0,0 +1,35 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flowy_infra_ui/style_widget/text.dart';
|
||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
||||
|
||||
class MobileCalendarEventsEmpty extends StatelessWidget {
|
||||
const MobileCalendarEventsEmpty({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Center(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
FlowyText(
|
||||
LocaleKeys.calendar_mobileEventScreen_emptyTitle.tr(),
|
||||
fontWeight: FontWeight.w700,
|
||||
fontSize: 14,
|
||||
),
|
||||
const VSpace(8),
|
||||
FlowyText.regular(
|
||||
LocaleKeys.calendar_mobileEventScreen_emptyBody.tr(),
|
||||
textAlign: TextAlign.center,
|
||||
maxLines: 2,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,3 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:appflowy/mobile/presentation/database/mobile_calendar_events_empty.dart';
|
||||
import 'package:appflowy/plugins/database/application/row/row_cache.dart';
|
||||
import 'package:appflowy/plugins/database/calendar/application/calendar_bloc.dart';
|
||||
import 'package:appflowy/plugins/database/calendar/presentation/calendar_event_card.dart';
|
||||
@ -5,7 +8,6 @@ import 'package:calendar_view/calendar_view.dart';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
class MobileCalendarEventsScreen extends StatefulWidget {
|
||||
@ -44,37 +46,40 @@ class _MobileCalendarEventsScreenState
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocProvider<CalendarBloc>.value(
|
||||
value: widget.calendarBloc,
|
||||
child: BlocBuilder<CalendarBloc, CalendarState>(
|
||||
buildWhen: (p, c) =>
|
||||
p.newEvent != c.newEvent &&
|
||||
c.newEvent?.date.withoutTime == widget.date,
|
||||
builder: (context, state) {
|
||||
if (state.newEvent?.event != null &&
|
||||
_events
|
||||
.none((e) => e.eventId == state.newEvent!.event!.eventId) &&
|
||||
state.newEvent!.date.withoutTime == widget.date) {
|
||||
_events.add(state.newEvent!.event!);
|
||||
}
|
||||
return Scaffold(
|
||||
floatingActionButton: FloatingActionButton(
|
||||
key: const Key('add_event_fab'),
|
||||
elevation: 6,
|
||||
backgroundColor: Theme.of(context).colorScheme.primary,
|
||||
foregroundColor: Theme.of(context).colorScheme.onPrimary,
|
||||
onPressed: () =>
|
||||
widget.calendarBloc.add(CalendarEvent.createEvent(widget.date)),
|
||||
child: const Text('+'),
|
||||
),
|
||||
appBar: AppBar(
|
||||
title: Text(
|
||||
DateFormat.yMMMMd(context.locale.toLanguageTag()).format(widget.date),
|
||||
),
|
||||
),
|
||||
body: BlocProvider<CalendarBloc>.value(
|
||||
value: widget.calendarBloc,
|
||||
child: BlocBuilder<CalendarBloc, CalendarState>(
|
||||
buildWhen: (p, c) =>
|
||||
p.newEvent != c.newEvent &&
|
||||
c.newEvent?.date.withoutTime == widget.date,
|
||||
builder: (context, state) {
|
||||
if (state.newEvent?.event != null &&
|
||||
_events
|
||||
.none((e) => e.eventId == state.newEvent!.event!.eventId) &&
|
||||
state.newEvent!.date.withoutTime == widget.date) {
|
||||
_events.add(state.newEvent!.event!);
|
||||
}
|
||||
|
||||
return Scaffold(
|
||||
floatingActionButton: FloatingActionButton(
|
||||
key: const Key('add_event_fab'),
|
||||
elevation: 6,
|
||||
backgroundColor: Theme.of(context).colorScheme.primary,
|
||||
foregroundColor: Theme.of(context).colorScheme.onPrimary,
|
||||
onPressed: () => widget.calendarBloc
|
||||
.add(CalendarEvent.createEvent(widget.date)),
|
||||
child: const Text('+'),
|
||||
),
|
||||
appBar: AppBar(
|
||||
title: Text(
|
||||
DateFormat.yMMMMd(context.locale.toLanguageTag())
|
||||
.format(widget.date),
|
||||
),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
if (_events.isEmpty) {
|
||||
return const MobileCalendarEventsEmpty();
|
||||
}
|
||||
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
const VSpace(10),
|
||||
@ -95,9 +100,9 @@ class _MobileCalendarEventsScreenState
|
||||
const VSpace(24),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -75,7 +75,8 @@ class _MobileHomeSettingPageState extends State<MobileHomeSettingPage> {
|
||||
PersonalInfoSettingGroup(
|
||||
userProfile: userProfile,
|
||||
),
|
||||
const NotificationsSettingGroup(),
|
||||
// TODO: Enable and implement along with Push Notifications
|
||||
// const NotificationsSettingGroup(),
|
||||
const AppearanceSettingGroup(),
|
||||
const LanguageSettingGroup(),
|
||||
if (Env.enableCustomCloud) const CloudSettingGroup(),
|
||||
|
@ -24,6 +24,7 @@ class NotificationsHubEmpty extends StatelessWidget {
|
||||
FlowyText.regular(
|
||||
LocaleKeys.notificationHub_emptyBody.tr(),
|
||||
textAlign: TextAlign.center,
|
||||
maxLines: 2,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
@ -917,6 +917,10 @@
|
||||
"previousMonth": "Previous Month",
|
||||
"nextMonth": "Next Month"
|
||||
},
|
||||
"mobileEventScreen": {
|
||||
"emptyTitle": "No events yet",
|
||||
"emptyBody": "Press the plus button to create an event on this day."
|
||||
},
|
||||
"settings": {
|
||||
"showWeekNumbers": "Show week numbers",
|
||||
"showWeekends": "Show weekends",
|
||||
|
Loading…
Reference in New Issue
Block a user