pukaad_ui 1.0.7
pukaad_ui: ^1.0.7 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_riverpod/flutter_riverpod.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_riverpod/legacy.dart';
import 'package:pukaad_ui/theme/theme_scheme.dart';
import 'package:pukaad_ui_example/router.dart';
import 'package:shadcn_ui/shadcn_ui.dart';
// ตัวอย่าง TranslationProvider
class TranslationProvider extends ChangeNotifier {
// กำหนดภาษาปัจจุบันเป็น default
String _currentLanguage = 'en_US';
String get currentLanguage => _currentLanguage;
void changeLanguage(String languageCode, String countryCode) {
_currentLanguage = '${languageCode}_$countryCode';
notifyListeners();
}
}
// ✅ Provider แบบ Riverpod 2.x
final translationProvider = ChangeNotifierProvider<TranslationProvider>((ref) {
return TranslationProvider();
});
// ตัวอย่าง GoRouter provider (ถ้าคุณมีของจริงอยู่แล้วก็ใช้ของคุณได้)
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
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);
// แยก languageCode กับ countryCode
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),
);
}
}