Files
ZenXercise/lib/src/app.dart
T

42 lines
1.5 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
import 'design/app_theme.dart';
import 'design/zen_style.dart';
import 'exercises/views/exercise_detail_view.dart';
import 'home/home_view.dart';
import 'localization/app_localizations.dart';
import 'settings/settings_controller.dart';
class ZenXerciseApp extends StatelessWidget {
const ZenXerciseApp({super.key});
@override
Widget build(BuildContext context) {
final mode = context.watch<SettingsController>().mode;
// The whole app morphs into the new Mode at that Mode's own pace.
final style = ZenStyle.forMode(mode);
return MaterialApp(
theme: AppTheme.forMode(mode),
themeAnimationDuration: style.motion,
themeAnimationCurve: style.curve,
restorationScopeId: 'app',
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: AppLocalizations.supportedLocales,
onGenerateTitle: (context) => AppLocalizations.of(context).appTitle,
onGenerateRoute: (settings) => MaterialPageRoute<Object?>(
settings: settings,
builder: (context) => switch (settings.name) {
ExerciseDetailView.routeName => ExerciseDetailView(exerciseId: settings.arguments! as String),
_ => const HomeView(),
},
),
);
}
}