pukaad_ui_app 0.0.1
pukaad_ui_app: ^0.0.1 copied to clipboard
A reusable UI Kit for Pukaad applications.
example/lib/main.dart
import 'package:example/core/router/app_router.dart';
import 'package:example/i18n/strings.g.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:pukaad_ui_app/pukaad_ui_app.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_quill/flutter_quill.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Load environment variables
await dotenv.load(fileName: ".env.example");
LocaleSettings.useDeviceLocale(); // Start with device locale
// Sync PukaadUIConfig with current locale
_updatePukaadUIConfig();
// Listen to locale changes
LocaleSettings.getLocaleStream().listen((_) {
_updatePukaadUIConfig();
});
// Restore session
final container = ProviderContainer();
// Auth check is handled automatically by the provider's build method
runApp(
TranslationProvider(
child: UncontrolledProviderScope(
container: container,
child: const MyApp(),
),
),
);
}
void _updatePukaadUIConfig() {
PukaadUIConfig.strings = PukaadUIStrings(
forgotPassword: t.auth.forgot_password,
passwordLengthRequirement: t.auth.password_requirements.length,
passwordUpperCaseRequirement: t.auth.password_requirements.uppercase,
passwordDigitRequirement: t.auth.password_requirements.digit,
passwordNoSpaceRequirement: t.auth.password_requirements.no_space,
recaptchaSiteKey: dotenv.env['RECAPTCHA_SITE_KEY'] ?? '',
);
}
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(goRouterProvider);
return MaterialApp.router(
title: 'Pukaad Personal App',
debugShowCheckedModeBanner: false,
theme: AppTheme.lightTheme,
routerConfig: router,
locale: TranslationProvider.of(context).flutterLocale, // use provider
supportedLocales: AppLocaleUtils.supportedLocales,
localizationsDelegates: [
...GlobalMaterialLocalizations.delegates,
FlutterQuillLocalizations.delegate,
],
);
}
}