Files
Krow-workspace/apps/mobile/apps/client/lib/main.dart
2026-02-06 11:35:31 +09:00

101 lines
3.6 KiB
Dart

import 'package:core_localization/core_localization.dart' as core_localization;
import 'package:design_system/design_system.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:client_authentication/client_authentication.dart'
as client_authentication;
import 'package:client_main/client_main.dart' as client_main;
import 'package:client_settings/client_settings.dart' as client_settings;
import 'package:client_hubs/client_hubs.dart' as client_hubs;
import 'package:client_create_order/client_create_order.dart'
as client_create_order;
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/foundation.dart';
import 'package:krow_data_connect/krow_data_connect.dart' as dc;
import 'package:krow_core/core.dart';
import 'firebase_options.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: kIsWeb ? DefaultFirebaseOptions.currentPlatform : null,
);
if (kDebugMode) {
debugPrint('DataConnect config: ${dc.ExampleConnector.connectorConfig.toJson()}');
}
runApp(ModularApp(module: AppModule(), child: const AppWidget()));
}
/// The main application module for the Client app.
class AppModule extends Module {
@override
List<Module> get imports => <Module>[core_localization.LocalizationModule()];
@override
void routes(RouteManager r) {
// Initial route points to the client authentication flow
r.module('/', module: client_authentication.ClientAuthenticationModule());
// Client main shell with bottom navigation (includes home as a child)
r.module('/client-main', module: client_main.ClientMainModule());
// Client settings route
r.module(
'/client-settings',
module: client_settings.ClientSettingsModule(),
);
// Client hubs route
r.module('/client-hubs', module: client_hubs.ClientHubsModule());
// Client create order route
r.module(
'/client/create-order',
module: client_create_order.ClientCreateOrderModule(),
);
}
}
class AppWidget extends StatelessWidget {
const AppWidget({super.key});
@override
Widget build(BuildContext context) {
return WebMobileFrame(
appName: 'KROW Client\nApplication',
logo: Image.asset('assets/logo.png'),
child: BlocProvider<core_localization.LocaleBloc>(
create: (BuildContext context) =>
Modular.get<core_localization.LocaleBloc>(),
child:
BlocBuilder<
core_localization.LocaleBloc,
core_localization.LocaleState
>(
builder:
(BuildContext context, core_localization.LocaleState state) {
return core_localization.TranslationProvider(
child: MaterialApp.router(
debugShowCheckedModeBanner: false,
title: "Krow Client",
theme: UiTheme.light,
routerConfig: Modular.routerConfig,
locale: state.locale,
supportedLocales: state.supportedLocales,
localizationsDelegates:
const <LocalizationsDelegate<dynamic>>[
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
),
);
},
),
),
);
}
}