fix: only open the last opened view if plugin is blank

This commit is contained in:
Poly-Pixel 2022-09-25 11:36:34 -04:00
parent bc5f0c206b
commit 510fd11680
No known key found for this signature in database
GPG Key ID: C1B34B48A296CFCC
2 changed files with 19 additions and 5 deletions

View File

@ -144,11 +144,24 @@ class _HomeScreenState extends State<HomeScreen> {
collapsedNotifier: getIt<HomeStackManager>().collapsedNotifier,
);
final latestView =
workspaceSetting.hasLatestView() ? workspaceSetting.latestView : null;
if (getIt<MenuSharedState>().latestOpenView == null) {
/// AppFlowy will open the view that the last time the user opened it. The _buildHomeMenu will get called when AppFlowy's screen resizes. So we only set the latestOpenView when it's null.
getIt<MenuSharedState>().latestOpenView = latestView;
// Only open the last opened view if the [HomeStackManager] current opened
// plugin is blank and the last opened view is not null.
//
// All opened widgets that display on the home screen are in the form
// of plugins. There is a list of built-in plugins defined in the
// [PluginType] enum, including board, grid and trash.
if (getIt<HomeStackManager>().plugin.ty == PluginType.blank) {
// Open the last opened view.
if (workspaceSetting.hasLatestView()) {
final view = workspaceSetting.latestView;
final plugin = makePlugin(
pluginType: view.pluginType,
data: view,
);
getIt<HomeStackManager>().setPlugin(plugin);
getIt<MenuSharedState>().latestOpenView = view;
}
}
return FocusTraversalGroup(child: RepaintBoundary(child: homeMenu));

View File

@ -144,6 +144,7 @@ class HomeStackManager {
}
PublishNotifier<bool> get collapsedNotifier => _notifier.collapsedNotifier;
Plugin get plugin => _notifier.plugin;
void setPlugin(Plugin newPlugin) {
_notifier.plugin = newPlugin;