halkyon/apps/todo/halkyon_todo_flutter/lib/main.dart

41 lines
1.7 KiB
Dart
Raw Normal View History

import 'dart:io';
import 'package:halkyon_app/halkyon_app.dart';
import 'package:halkyon_todo_flutter/src/app/licences.dart';
import 'package:halkyon_todo_flutter/src/app/todo_app.dart';
import 'package:halkyon_todo_flutter/src/app/todo_dependencies.dart';
import 'package:halkyon_ui/halkyon_ui.dart';
import 'package:material_ui/material_ui.dart';
import 'package:path/path.dart' as p;
import 'package:serverpod_flutter/serverpod_flutter.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// Noto Sans' notice (halkyon_ui), the flags' and Unicode CLDR's
// (halkyon_app), and Lucide's for the app's icon.
registerFontLicenses();
registerHalkyonAppLicenses();
registerLucideLicense();
// The instance the build names (`--dart-define=SERVER_URL=…`, or
// `assets/config.json`): the first offered at the first start.
final builtIn = Instance.parse(await getServerUrl())!;
final device = await TodoDevice.create(builtIn: builtIn);
final instances = InstanceChoice(
FileInstanceStore(File(p.join(device.support, 'instances.json'))),
builtIn: builtIn,
forget: device.storage.forget,
);
await instances.load(usedBefore: device.storage.usedBefore());
runApp(
TodoApp(
choice: instances,
// Only an instance of Halkyon Todo: one of another Halkyon app's
// answers too, but holds nothing of this app's.
checker: ServerpodInstanceChecker(app: 'todo'),
// No country names yet: where an instance keeps people's data shows
// its flag and the country's code.
countryNames: MemoryCountryNames(const {}),
open: (instance) => TodoDependencies.create(instance, device),
),
);
}