fix: Navigating to settings, redirects to home page #812

This commit is contained in:
Kingkor Roy Tirtho 2023-11-08 17:48:59 +06:00
parent 6b8ae88db4
commit da04f068f9
3 changed files with 18 additions and 12 deletions

View File

@ -22,7 +22,7 @@ import 'package:spotube/utils/platform.dart';
import 'package:spotube/utils/type_conversion_utils.dart';
class Sidebar extends HookConsumerWidget {
final int selectedIndex;
final int? selectedIndex;
final void Function(int) onSelectedIndexChanged;
final Widget child;
@ -57,7 +57,7 @@ class Sidebar extends HookConsumerWidget {
ref.watch(userPreferencesProvider.select((s) => s.layoutMode));
final controller = useSidebarXController(
selectedIndex: selectedIndex,
selectedIndex: selectedIndex ?? 0,
extended: mediaQuery.lgAndUp,
);
@ -75,17 +75,21 @@ class Sidebar extends HookConsumerWidget {
);
useEffect(() {
if (controller.selectedIndex != selectedIndex) {
controller.selectIndex(selectedIndex);
if (controller.selectedIndex != selectedIndex && selectedIndex != null) {
controller.selectIndex(selectedIndex!);
}
return null;
}, [selectedIndex]);
useEffect(() {
controller.addListener(() {
void listener() {
onSelectedIndexChanged(controller.selectedIndex);
});
return null;
}
controller.addListener(listener);
return () {
controller.removeListener(listener);
};
}, [controller]);
useEffect(() {

View File

@ -16,7 +16,7 @@ import 'package:spotube/provider/user_preferences_provider.dart';
final navigationPanelHeight = StateProvider<double>((ref) => 50);
class SpotubeNavigationBar extends HookConsumerWidget {
final int selectedIndex;
final int? selectedIndex;
final void Function(int) onSelectedIndexChanged;
const SpotubeNavigationBar({
@ -33,7 +33,7 @@ class SpotubeNavigationBar extends HookConsumerWidget {
final layoutMode =
ref.watch(userPreferencesProvider.select((s) => s.layoutMode));
final insideSelectedIndex = useState<int>(selectedIndex);
final insideSelectedIndex = useState<int>(selectedIndex ?? 0);
final buttonColor = useBrightnessValue(
theme.colorScheme.inversePrimary,
@ -46,7 +46,9 @@ class SpotubeNavigationBar extends HookConsumerWidget {
final panelHeight = ref.watch(navigationPanelHeight);
useEffect(() {
insideSelectedIndex.value = selectedIndex;
if (selectedIndex != null) {
insideSelectedIndex.value = selectedIndex!;
}
return null;
}, [selectedIndex]);

View File

@ -159,7 +159,7 @@ class RootApp extends HookConsumerWidget {
return Scaffold(
body: Sidebar(
selectedIndex: rootPaths[location] ?? 0,
selectedIndex: rootPaths[location],
onSelectedIndexChanged: onSelectIndexChanged,
child: child,
),
@ -169,7 +169,7 @@ class RootApp extends HookConsumerWidget {
children: [
BottomPlayer(),
SpotubeNavigationBar(
selectedIndex: rootPaths[location] ?? 0,
selectedIndex: rootPaths[location],
onSelectedIndexChanged: onSelectIndexChanged,
),
],