90 lines
3.1 KiB
Dart
90 lines
3.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:intl/date_symbol_data_local.dart';
|
|
import 'package:intl/intl.dart';
|
|
import 'package:kooltab2/services/pin_lock_service.dart';
|
|
import 'package:kooltab2/services/settings_service.dart';
|
|
import 'package:kooltab2/viewmodels/history_view_model.dart';
|
|
import 'package:kooltab2/viewmodels/inventory_view_model.dart';
|
|
import 'package:kooltab2/viewmodels/pin_lock_view_model.dart';
|
|
import 'package:kooltab2/viewmodels/settings_view_model.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'app/app.dart';
|
|
import 'app/app_bootstrap.dart';
|
|
import 'app/router.dart';
|
|
import 'database/app_database.dart';
|
|
import 'services/bar_tab_service.dart';
|
|
import 'services/product_service.dart';
|
|
import 'viewmodels/bar_screen_view_model.dart';
|
|
import 'viewmodels/product_list_view_model.dart';
|
|
|
|
Future<void> main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
await initializeDateFormatting('nl_BE', null);
|
|
Intl.defaultLocale = 'nl_BE';
|
|
|
|
await SystemChrome.setPreferredOrientations([
|
|
DeviceOrientation.landscapeLeft,
|
|
DeviceOrientation.landscapeRight,
|
|
]);
|
|
|
|
final pinLockViewModel = PinLockViewModel(pinLockService: PinLockService());
|
|
await pinLockViewModel.ensureLoaded();
|
|
|
|
final appRouter = createAppRouter(pinLockViewModel);
|
|
|
|
runApp(
|
|
MultiProvider(
|
|
providers: [
|
|
Provider<AppDatabase>(
|
|
create: (_) => AppDatabase(),
|
|
dispose: (_, database) => database.close(),
|
|
),
|
|
Provider<ProductService>(
|
|
create: (context) =>
|
|
DriftProductService(database: context.read<AppDatabase>()),
|
|
),
|
|
Provider<BarTabService>(
|
|
create: (context) =>
|
|
DriftBarTabService(database: context.read<AppDatabase>()),
|
|
),
|
|
Provider<SettingsService>(
|
|
create: (context) =>
|
|
DriftSettingsService(database: context.read<AppDatabase>()),
|
|
),
|
|
ChangeNotifierProvider<InventoryViewModel>(
|
|
create: (context) => InventoryViewModel(
|
|
productService: context.read<ProductService>(),
|
|
)..load(),
|
|
),
|
|
ChangeNotifierProvider<ProductListViewModel>(
|
|
create: (context) => ProductListViewModel(
|
|
productService: context.read<ProductService>(),
|
|
inventory: context.read<InventoryViewModel>(),
|
|
),
|
|
),
|
|
ChangeNotifierProvider<BarScreenViewModel>(
|
|
create: (context) =>
|
|
BarScreenViewModel(
|
|
barTabService: context.read<BarTabService>(),
|
|
inventory: context.read<InventoryViewModel>(),
|
|
),
|
|
),
|
|
ChangeNotifierProvider<HistoryViewModel>(
|
|
create: (context) =>
|
|
HistoryViewModel(barTabService: context.read<BarTabService>()),
|
|
),
|
|
ChangeNotifierProvider<PinLockViewModel>.value(value: pinLockViewModel),
|
|
ChangeNotifierProvider<SettingsViewModel>(
|
|
create: (context) => SettingsViewModel(
|
|
settingsService: context.read<SettingsService>(),
|
|
),
|
|
),
|
|
],
|
|
child: AppBootstrap(child: KoolTabApp(router: appRouter)),
|
|
),
|
|
);
|
|
}
|