The instances a device keeps an account on, the first start, the account switcher, signing in and switching person, the gates that build the dependencies per instance and per person, and the sync service with its status, card and banner move to halkyon_app (halkyon_shared, ADR 0014), on halkyon_base's client. Learn supplies its frame (name, word, icon, theme, launch screen, and the two texts only it can say), its dependencies, whether the device holds content, and its world map's country names; every text reads as before. An instance counts only where its basics name the app `learn`, which learnBase now sets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
53 lines
2.3 KiB
Dart
53 lines
2.3 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:halkyon_app/halkyon_app.dart';
|
|
import 'package:halkyon_learn_flutter/src/app/learn_frame.dart';
|
|
import 'package:halkyon_learn_flutter/src/app/learn_sessions.dart';
|
|
import 'package:halkyon_learn_flutter/src/core/bloc/app_bloc_observer.dart';
|
|
import 'package:halkyon_learn_flutter/src/core/country/country_names.dart';
|
|
import 'package:halkyon_learn_flutter/src/core/dependencies/dependencies.dart';
|
|
import 'package:halkyon_learn_flutter/src/core/device_settings/widget/device_settings_scope.dart';
|
|
import 'package:halkyon_learn_flutter/src/core/theme/cjk_fonts.dart';
|
|
import 'package:halkyon_learn_flutter/src/feature/dictionary/data/mecab_license.dart';
|
|
import 'package:halkyon_learn_flutter/src/feature/geo_map/data/cldr_license.dart';
|
|
import 'package:halkyon_learn_flutter/src/feature/kanji/data/kanjivg_license.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();
|
|
Bloc.observer = const AppBlocObserver();
|
|
registerFontLicenses();
|
|
registerCjkFontLicenses();
|
|
registerKanjiVgLicense();
|
|
registerFlagIconsLicense();
|
|
registerCldrLicense();
|
|
registerMecabLicenses();
|
|
// The instance the build names (`--dart-define=SERVER_URL=…`, or
|
|
// `assets/config.json`): the first offered, and the one installs from
|
|
// before the choice go on with.
|
|
final builtIn = Instance.parse(await getServerUrl())!;
|
|
final device = await DeviceParts.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(
|
|
InstanceGate(
|
|
frame: learnFrame,
|
|
choice: instances,
|
|
// Only an instance of Halkyon Learn: one of another Halkyon app's
|
|
// answers too, but holds nothing of this app's.
|
|
checker: ServerpodInstanceChecker(app: 'learn'),
|
|
countryNames: AssetCountryNames(),
|
|
open: (instance) => Dependencies.create(instance, device),
|
|
readLook: () async => (await device.deviceSettingsStore.read()).look,
|
|
app: const LearnSessions(),
|
|
),
|
|
);
|
|
}
|