feat: display the titles of a view's ancestors and the view's title on the title bar. (#3898)

* feat: add no pages inside tips

* feat: show view's ancestors (include itself) title on bar

* feat: show view's ancestors (include itself) title on bar

* test: add integration tests

* fix: integration tests
This commit is contained in:
Lucas.Xu
2023-11-09 13:11:13 +08:00
committed by GitHub
parent 42e7317cd4
commit 9586ea0e6f
15 changed files with 507 additions and 70 deletions

View File

@ -3,8 +3,8 @@ import 'package:appflowy/plugins/database_view/widgets/share_button.dart';
import 'package:appflowy/plugins/util.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
import 'package:appflowy/workspace/presentation/home/home_stack.dart';
import 'package:appflowy/workspace/presentation/widgets/left_bar_item.dart';
import 'package:appflowy/workspace/presentation/widgets/tab_bar_item.dart';
import 'package:appflowy/workspace/presentation/widgets/view_title_bar.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@ -190,7 +190,7 @@ class DatabasePluginWidgetBuilder extends PluginWidgetBuilder {
});
@override
Widget get leftBarItem => ViewLeftBarItem(view: notifier.view);
Widget get leftBarItem => ViewTitleBar(view: notifier.view);
@override
Widget tabBarItem(String pluginId) => ViewTabBarItem(view: notifier.view);

View File

@ -9,10 +9,10 @@ import 'package:appflowy/plugins/document/presentation/share/share_button.dart';
import 'package:appflowy/plugins/util.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
import 'package:appflowy/workspace/presentation/home/home_stack.dart';
import 'package:appflowy/workspace/presentation/widgets/left_bar_item.dart';
import 'package:appflowy/workspace/presentation/widgets/tab_bar_item.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:appflowy/workspace/presentation/widgets/view_title_bar.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@ -104,7 +104,7 @@ class DocumentPluginWidgetBuilder extends PluginWidgetBuilder
}
@override
Widget get leftBarItem => ViewLeftBarItem(view: view);
Widget get leftBarItem => ViewTitleBar(view: view);
@override
Widget tabBarItem(String pluginId) => ViewTabBarItem(view: notifier.view);

View File

@ -12,8 +12,11 @@ class EmojiPickerButton extends StatelessWidget {
super.key,
required this.emoji,
required this.onSubmitted,
this.emojiPickerSize = const Size(300, 250),
this.emojiPickerSize = const Size(360, 380),
this.emojiSize = 18.0,
this.defaultIcon,
this.offset,
this.direction,
});
final String emoji;
@ -21,6 +24,9 @@ class EmojiPickerButton extends StatelessWidget {
final Size emojiPickerSize;
final void Function(String emoji, PopoverController? controller) onSubmitted;
final PopoverController popoverController = PopoverController();
final Widget? defaultIcon;
final Offset? offset;
final PopoverDirection? direction;
@override
Widget build(BuildContext context) {
@ -32,6 +38,8 @@ class EmojiPickerButton extends StatelessWidget {
width: emojiPickerSize.width,
height: emojiPickerSize.height,
),
offset: offset,
direction: direction ?? PopoverDirection.rightWithTopAligned,
popupBuilder: (context) => Container(
width: emojiPickerSize.width,
height: emojiPickerSize.height,
@ -41,18 +49,24 @@ class EmojiPickerButton extends StatelessWidget {
onExit: () {},
),
),
child: FlowyTextButton(
emoji,
overflow: TextOverflow.visible,
fontSize: emojiSize,
padding: EdgeInsets.zero,
constraints: const BoxConstraints(minWidth: 35.0),
fillColor: Colors.transparent,
mainAxisAlignment: MainAxisAlignment.center,
onPressed: () {
popoverController.show();
},
),
child: emoji.isEmpty && defaultIcon != null
? FlowyButton(
useIntrinsicWidth: true,
text: defaultIcon!,
onTap: () => popoverController.show(),
)
: FlowyTextButton(
emoji,
overflow: TextOverflow.visible,
fontSize: emojiSize,
padding: EdgeInsets.zero,
constraints: const BoxConstraints(minWidth: 35.0),
fillColor: Colors.transparent,
mainAxisAlignment: MainAxisAlignment.center,
onPressed: () {
popoverController.show();
},
),
);
} else {
return FlowyTextButton(