pukaad_ui_lib 1.0.9
pukaad_ui_lib: ^1.0.9 copied to clipboard
pukaad_ui is a Flutter package providing reusable UI components, custom input fields, and Thai font support.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_riverpod/legacy.dart';
import 'package:pukaad_ui_lib/theme/theme_scheme.dart';
import 'package:pukaad_ui_example/router.dart';
import 'package:pukaad_ui_lib/utility/responsive/responsive_wrapper.dart';
import 'package:shadcn_ui/shadcn_ui.dart';
@pragma('vm:entry-point')
Future<void> firebaseMessagingHandler(dynamic message) async {
debugPrint("Handling background message");
}
class TranslationProvider extends ChangeNotifier {
String _currentLanguage = 'th_TH';
String get currentLanguage => _currentLanguage;
void changeLanguage(String languageCode, String countryCode) {
_currentLanguage = '${languageCode}_$countryCode';
notifyListeners();
}
}
final translationProvider = ChangeNotifierProvider<TranslationProvider>((ref) {
return TranslationProvider();
});
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// Lock orientation to portrait mode only
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
await dotenv.load(fileName: ".env");
runApp(const ProviderScope(child: MyApp()));
}
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(goRouterProvider);
final translation = ref.watch(translationProvider);
final localeParts = translation.currentLanguage.split('_');
final languageCode = localeParts[0];
final countryCode = localeParts.length > 1 ? localeParts[1] : '';
return ShadApp.router(
debugShowCheckedModeBanner: false,
title: "Pikachu",
theme: lightThemeData,
darkTheme: darkThemeData,
themeMode: ThemeMode.light,
routerConfig: router,
locale: Locale(languageCode, countryCode),
builder: (context, child) {
return ResponsiveWrapper(child: child ?? const SizedBox());
},
);
}
}