wahyz_bootstrap 0.0.4
wahyz_bootstrap: ^0.0.4 copied to clipboard
Bootstrap for WahyzDAD
example/lib/main.dart
import 'package:example/firebase_options.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:wahyz_bootstrap/domain/models/base/model_registry.dart';
import 'package:wahyz_bootstrap/domain/models/concrete_model_factory/firestore_user_factory.dart';
import 'package:wahyz_bootstrap/domain/models/concrete_model_factory/reservation_factory.dart';
import 'package:wahyz_bootstrap/domain/models/firestore_user.dart';
import 'package:wahyz_bootstrap/domain/models/reservation.dart';
import 'constants/constants.dart';
import 'domain/models/concrete_model_factory/ksmer_factory.dart';
import 'domain/models/concrete_model_factory/vehicle_factory.dart';
import 'domain/models/ksmer.dart';
import 'domain/models/vehicle.dart';
import 'utils/go_router_provider.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// final initFuture = MobileAds.instance.initialize();
// final adState = AdState(initFuture);
runApp(const ProviderScope(
child: MyApp(),
));
}
class MyApp extends HookConsumerWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context, WidgetRef ref) {
// ref.watch(baseModelRegistryProvider.notifier)
ref.watch(baseModelGeneralRegistryProvider.notifier)
..register<Reservation>(
factory: ref.watch(reservationFactoryProvider.notifier),
)
// ..register<Reservation<Ksmer>>(
// factory: ref.watch(reservationFactoryProvider<Ksmer>().notifier),
// )
..register<Ksmer>(
factory: ref.watch(ksmerFactoryProvider.notifier),
)
..register<Vehicle>(
factory: ref.watch(vehicleFactoryProvider.notifier),
)
..register<FirestoreUser>(
factory: ref.watch(firestoreUserFactoryProvider.notifier),
);
final goRouter = ref.watch(goRouterProvider);
// list up all goRouter routes
debugPrint("[[goRouter]]: ${goRouter.configuration.routes}");
return _EagerInitialization(
child: MaterialApp.router(
debugShowCheckedModeBanner: false,
title: 'KSM Omniverse App',
routerConfig: goRouter,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: seedColor),
useMaterial3: true,
),
),
);
}
}
class _EagerInitialization extends ConsumerWidget {
// bootstrap the app by eagerly initializing providers
const _EagerInitialization({required this.child});
final Widget child;
@override
Widget build(BuildContext context, WidgetRef ref) {
// Eagerly initialize providers by watching them.
// By using "watch", the provider will stay alive and not be disposed.
debugPrint(
// "[[baseModelRegistryProvider]]: ${ref.watch(baseModelRegistryProvider)}");
"[[baseModelRegistryProvider]]: ${ref.watch(baseModelGeneralRegistryProvider)}");
return child;
}
}