mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-07-29 07:18:49 +02:00
fix(navigation): open download queue from snackbar actions
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
enum ShellTab { home, library, repository, settings }
|
||||
|
||||
class ShellNavigationService {
|
||||
static final GlobalKey<NavigatorState> homeTabNavigatorKey =
|
||||
GlobalKey<NavigatorState>();
|
||||
@@ -10,6 +12,29 @@ class ShellNavigationService {
|
||||
|
||||
static int _currentTabIndex = 0;
|
||||
static bool _showRepoTab = false;
|
||||
static Object? _tabSelectionOwner;
|
||||
static ValueChanged<ShellTab>? _tabSelectionHandler;
|
||||
|
||||
static void registerTabSelectionHandler({
|
||||
required Object owner,
|
||||
required ValueChanged<ShellTab> handler,
|
||||
}) {
|
||||
_tabSelectionOwner = owner;
|
||||
_tabSelectionHandler = handler;
|
||||
}
|
||||
|
||||
static void unregisterTabSelectionHandler(Object owner) {
|
||||
if (!identical(_tabSelectionOwner, owner)) return;
|
||||
_tabSelectionOwner = null;
|
||||
_tabSelectionHandler = null;
|
||||
}
|
||||
|
||||
static bool requestTab(ShellTab tab) {
|
||||
final handler = _tabSelectionHandler;
|
||||
if (handler == null) return false;
|
||||
handler(tab);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void syncState({
|
||||
required int currentTabIndex,
|
||||
|
||||
Reference in New Issue
Block a user