61 lines
1.6 KiB
Dart
61 lines
1.6 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
import '../database/app_database.dart';
|
|
import '../services/bar_tab_service.dart';
|
|
import '../services/default_product_seeder.dart';
|
|
import '../services/export_service.dart';
|
|
import '../services/remote_sync_service.dart';
|
|
import '../viewmodels/bar_screen_view_model.dart';
|
|
import '../viewmodels/product_list_view_model.dart';
|
|
|
|
/// Kicks off the work that can run after the first frame.
|
|
class AppBootstrap extends StatefulWidget {
|
|
final Widget child;
|
|
|
|
const AppBootstrap({super.key, required this.child});
|
|
|
|
@override
|
|
State<AppBootstrap> createState() => _AppBootstrapState();
|
|
}
|
|
|
|
class _AppBootstrapState extends State<AppBootstrap> {
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
if (!mounted) return;
|
|
|
|
unawaited(
|
|
DefaultProductSeeder(
|
|
database: context.read<AppDatabase>(),
|
|
).seedIfEmpty(),
|
|
);
|
|
|
|
context.read<ProductListViewModel>().ensureLoaded();
|
|
context.read<BarScreenViewModel>().ensureLoaded();
|
|
|
|
final syncService = context.read<RemoteSyncService>();
|
|
unawaited(
|
|
DefaultExportService(
|
|
barTabService: context.read<BarTabService>(),
|
|
authToken: () => syncService.authToken,
|
|
).uploadToServer(),
|
|
);
|
|
|
|
unawaited(
|
|
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky),
|
|
);
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return widget.child;
|
|
}
|
|
}
|