advanced_nav_service 0.4.0
advanced_nav_service: ^0.4.0 copied to clipboard
A comprehensive navigation service package for Flutter applications providing routing, navigation state management, and navigation utilities.
import 'package:flutter/material.dart';
import 'package:advanced_nav_service/nav_service.dart';
import 'links/profile_link_handler.dart';
import 'links/settings_link_handler.dart';
import 'scenes/home.dart';
import 'scenes/profile.dart';
import 'scenes/settings.dart';
final navigatorKey = GlobalKey<NavigatorState>();
void main() {
NavService.instance.init(
NavServiceConfig(
navigatorKey: navigatorKey,
routes: navRoutes,
enableLogger: true,
linkPrefixes: ['myapp://', 'https://myapp.com/'],
linkHandlers: [SettingsLinkHandler(), ProfileLinkHandler()],
),
);
runApp(const NavServiceExample());
}
class NavServiceExample extends StatelessWidget {
const NavServiceExample({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'NavService Example',
navigatorKey: navigatorKey,
navigatorObservers: [NavService.instance.routeObserver],
theme: ThemeData(primarySwatch: Colors.blue, useMaterial3: true),
home: const LaunchScreen(),
);
}
}
class LaunchScreen extends StatefulWidget {
const LaunchScreen({super.key});
@override
State<LaunchScreen> createState() => _LaunchScreenState();
}
class _LaunchScreenState extends State<LaunchScreen> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
// Replace with setup process here
await Future.delayed(const Duration(seconds: 1));
NavService.instance.replaceAll([
NavRouteInfo(path: '/home'),
NavRouteInfo(path: '/settings'),
]);
});
}
@override
Widget build(BuildContext context) {
return const Scaffold(body: Center(child: CircularProgressIndicator()));
}
}
final navRoutes = [
NavRoute(path: '/home', builder: (context, state) => const HomeScreen()),
NavRoute(
path: '/settings',
builder: (context, state) => SettingsScreen(state: state),
),
NavRoute(
path: '/profile',
builder: (context, state) => ProfileScreen(state: state),
),
];