openlp-mobile-remote/lib/main.dart

78 lines
3.1 KiB
Dart

// OpenLP Mobile Remote
// ---------------------------------------------------------------------------
// Copyright (c) 2008-2019 OpenLP Developers
// ---------------------------------------------------------------------------
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'src/bloc/display_options_dialog_bloc.dart';
import 'src/bloc/settings_bloc.dart';
import 'src/openlp_mobile_remote_app.dart';
import 'src/configurations/app_theme.dart';
import 'src/configurations/app_localizations.dart';
import 'src/screens/settings.dart';
void main() => runApp(MultiBlocProvider(
providers: [
BlocProvider<DisplayOptionsDialogBloc>(
builder: (context) => DisplayOptionsDialogBloc(),
),
BlocProvider<SettingsBloc>(
builder: (context) => SettingsBloc(),
),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
theme: appTheme,
supportedLocales: [
Locale('en'),
],
localizationsDelegates: [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
localeResolutionCallback: (locale, supportedLocales) {
if (locale == null) {
return supportedLocales.first;
}
List<Locale> sameLanguageLocales = [];
for (var supportedLocale in supportedLocales) {
if (supportedLocale.languageCode == locale.languageCode) {
if (supportedLocale.countryCode == locale.countryCode) {
return supportedLocale;
}
sameLanguageLocales.add(supportedLocale);
}
}
if (sameLanguageLocales.isNotEmpty)
return sameLanguageLocales.first;
else
return supportedLocales.first;
},
routes: <String, WidgetBuilder>{
'/': (context) => OpenLPMobileRemoteApp(),
'/settings': (context) => Settings(),
},
),
));