blueprint_flutter_core 2.1.0
blueprint_flutter_core: ^2.1.0 copied to clipboard
A modular Flutter core package providing UI components, theming, and feature modules for scalable apps.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:blueprint_flutter_core/blueprint_theme.dart';
import 'package:blueprint_flutter_core/blueprint_widgets.dart';
import 'package:blueprint_flutter_core/blueprint_flutter_core.dart';
import 'package:blueprint_flutter_core_example/config/app_config.dart';
import 'package:blueprint_flutter_core_example/router.dart';
import 'package:blueprint_flutter_core_example/theme/app_theme.dart';
@pragma('vm:entry-point')
Future<void> _onBackgroundMessage(RemoteMessage message) async {
// FxMessaging.onBackgroundMessage(message);
}
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await FxCore.init(backgroundMessageHandler: _onBackgroundMessage);
runApp(
BlueprintFlutterCore(
config: AppConfig(),
child: const App(),
)
);
}
class App extends ConsumerWidget {
const App({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(routerProvider);
final themeMode = ref.watch(fxThemeControllerProvider);
return LayoutBuilder(
builder: (context, constraints) {
ScreenUtil.init(context, designWidth: 390, designHeight: 844);
return MaterialApp.router(
title: ref.read(fxConfigProvider).appName,
theme: AppTheme().build(Brightness.light),
themeMode: themeMode,
darkTheme: AppTheme().build(Brightness.dark),
routerConfig: router,
);
},
);
}
}
// main.dart — must be top-level, outside any class
// @pragma('vm:entry-point')
// Future<void> _onBackgroundMessage(RemoteMessage message) async {
// // FxMessaging.onBackgroundMessage(message);
// }
// Future<void> main() async {
// WidgetsFlutterBinding.ensureInitialized();
// await FxCore.init(backgroundMessageHandler: _onBackgroundMessage);
// runApp(
// BlueprintFlutterCore(
// config: AppConfig(),
// child: const ExampleApp(),
// )
// );
// }
// class ExampleApp extends ConsumerWidget {
// const ExampleApp({super.key});
// @override
// Widget build(BuildContext context, WidgetRef ref) {
// final themeMode = ref.watch(fxThemeControllerProvider);
// return MaterialApp.router(
// title: ref.read(fxConfigProvider).appName,
// theme: AppTheme().build(Brightness.light),
// themeMode: themeMode,
// darkTheme: AppTheme().build(Brightness.dark),
// routerConfig: ref.watch(routerProvider),
// debugShowCheckedModeBanner: false,
// builder: (context, child) {
// ScreenUtil.init(context, designWidth: 390, designHeight: 844);
// return child ?? const SizedBox.shrink();
// },
// );
// }
// }