auth_wrapper 1.0.2
auth_wrapper: ^1.0.2 copied to clipboard
A simple Dart package for handling authentication logic.
auth_wrapper #
auth_wrapper
is a lightweight and customizable Flutter package to manage public and protected routes with async authentication checks. Ideal for apps where login state must be verified before loading protected content.
✨ Features #
- ✅ Easy route-based auth protection
- 🔐 Supports both public and protected pages
- 🔄 Async authentication check with loading handler hooks
- 🧩 Integrates directly into your
MaterialApp
- 🧱 Static and builder-based route support
🚀 Installation #
Add the following to your pubspec.yaml
:
dependencies:
auth_wrapper:
git:
url: https://github.com/nepmods/auth_wrapper.git
Or, if published:
dependencies:
auth_wrapper: ^1.0.0
🧩 Usage #
1. Define your routes #
final publicPages = [
AuthRoute.static('/login', const LoginPage()),
];
final protectedPages = [
AuthRoute.static('/home', const HomePage()),
];
Alternatively, use
AuthRoute.builder
for dynamic pages with arguments.
2. Wrap your app with UseAuth
#
UseAuth(
publicPages: publicPages,
protectedPages: protectedPages,
noAuth: '/login', // fallback if not authenticated
success: '/home', // first route after login
checkFunc: () async {
// Your auth logic here
return await AuthService.isLoggedIn();
},
showLoading: () => showDialog(...),
hideLoading: () => Navigator.pop(context),
app: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'My App',
home: const SplashScreen(),
),
)
3. Protect individual widgets #
You can also use AuthWrapper
directly:
AuthWrapper(
checkFunc: () async => await AuthService.isLoggedIn(),
fallbackRoute: '/login',
showLoading: () => showDialog(...),
hideLoading: () => Navigator.pop(context),
child: MyProtectedWidget(),
)
📦 AuthRoute Options #
Constructor | Description |
---|---|
AuthRoute.static |
Pass a static widget for the route |
AuthRoute.builder |
Provide a builder for dynamic routes with args |
📄 Example #
See the example/ directory for a complete app setup.
📜 License #
MIT
🤝 Contributing #
Pull requests are welcome! If you find a bug or want a feature, feel free to open an issue.
📬 Contact #
Made with ❤️ by NepMods