🐛 Fix navigation state loss
This commit is contained in:
		| @@ -1,6 +1,7 @@ | |||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
| import 'package:provider/provider.dart'; | import 'package:provider/provider.dart'; | ||||||
| import 'package:solian/providers/auth.dart'; | import 'package:solian/providers/auth.dart'; | ||||||
|  | import 'package:solian/providers/navigation.dart'; | ||||||
| import 'package:solian/router.dart'; | import 'package:solian/router.dart'; | ||||||
| import 'package:solian/utils/timeago.dart'; | import 'package:solian/utils/timeago.dart'; | ||||||
| import 'package:flutter_gen/gen_l10n/app_localizations.dart'; | import 'package:flutter_gen/gen_l10n/app_localizations.dart'; | ||||||
| @@ -32,6 +33,7 @@ class SolianApp extends StatelessWidget { | |||||||
|             OverlayEntry(builder: (context) { |             OverlayEntry(builder: (context) { | ||||||
|               return MultiProvider( |               return MultiProvider( | ||||||
|                 providers: [ |                 providers: [ | ||||||
|  |                   Provider(create: (_) => NavigationProvider()), | ||||||
|                   Provider(create: (_) => AuthProvider()), |                   Provider(create: (_) => AuthProvider()), | ||||||
|                 ], |                 ], | ||||||
|                 child: child, |                 child: child, | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								lib/providers/navigation.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								lib/providers/navigation.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | class NavigationProvider { | ||||||
|  |   int selectedIndex = 0; | ||||||
|  | } | ||||||
| @@ -1,4 +1,6 @@ | |||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
|  | import 'package:provider/provider.dart'; | ||||||
|  | import 'package:solian/providers/navigation.dart'; | ||||||
| import 'package:solian/router.dart'; | import 'package:solian/router.dart'; | ||||||
| import 'package:flutter_gen/gen_l10n/app_localizations.dart'; | import 'package:flutter_gen/gen_l10n/app_localizations.dart'; | ||||||
|  |  | ||||||
| @@ -14,9 +16,21 @@ class _SolianNavigationDrawerState extends State<SolianNavigationDrawer> { | |||||||
|  |  | ||||||
|   void _onSelect(String name, int idx) { |   void _onSelect(String name, int idx) { | ||||||
|     setState(() => _selectedIndex = idx); |     setState(() => _selectedIndex = idx); | ||||||
|  |     context.read<NavigationProvider>().selectedIndex = idx; | ||||||
|     router.goNamed(name); |     router.goNamed(name); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   void initState() { | ||||||
|  |     Future.delayed(Duration.zero, () { | ||||||
|  |       setState(() { | ||||||
|  |         _selectedIndex = context.read<NavigationProvider>().selectedIndex; | ||||||
|  |       }); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     super.initState(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Widget build(BuildContext context) { |   Widget build(BuildContext context) { | ||||||
|     final navigationItems = [ |     final navigationItems = [ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user