flutterx_application 2.3.8-dev
flutterx_application: ^2.3.8-dev copied to clipboard
Core functionalities of a flutter application including translations, lifecycle events, navigation, dialogs
import 'package:example/ui/activity_fragment.dart';
import 'package:example/ui/activity_home.dart';
import 'package:example/ui/activity_login.dart';
import 'package:example/ui/view_model/view_model_main.dart';
import 'package:flutter/material.dart';
import 'package:flutterx_application/flutterx_application.dart';
import 'package:flutterx_live_data/flutterx_live_data.dart';
import 'package:go_router/go_router.dart';
void main() => runApp(ViewModelScope(
child: Initializer<GoRouter>(
initialize: (context) async {
final user = await MainViewModel.of(context).user.whenValue();
final initialRoute = user != null ? HomeActivity.route : LoginActivity.route;
return GoRouter(
initialLocation: initialRoute.path,
routes: [LoginActivity.route, HomeActivity.route, FragmentActivity.route],
errorBuilder: (context, state) {
WidgetsBinding.instance.addPostFrameCallback((_) => HomeActivity.openReplace(context));
return const SizedBox.shrink();
},
);
},
builder: (context, router) => MaterialApp.router(
routerConfig: router,
title: 'Flutterx Application Example',
theme: _appTheme(),
debugShowCheckedModeBanner: false,
),
),
));
ThemeData _appTheme() {
final baseTheme = ThemeData.from(
colorScheme: ColorScheme.light(
primary: Colors.deepPurple.shade700,
secondary: Colors.deepPurple.shade400,
tertiary: Colors.lightGreen.shade700,
),
);
return baseTheme.copyWith(
textTheme: baseTheme.textTheme.apply(bodyColor: Colors.black, displayColor: Colors.black),
appBarTheme: const AppBarThemeData(centerTitle: false));
}