Skip to content
Snippets Groups Projects
Commit bdaff4cd authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Merge branch '19-normalize-activity-application-architecture' into 'master'

Resolve "Normalize Activity application architecture"

Closes #19

See merge request !15
parents 2455b986 284402d4
No related branches found
No related tags found
1 merge request!15Resolve "Normalize Activity application architecture"
Pipeline #6778 passed
......@@ -4,11 +4,13 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/cubit/activity_cubit.dart';
import 'package:stopmotion/cubit/nav_cubit_pages.dart';
import 'package:stopmotion/cubit/nav_cubit_screens.dart';
import 'package:stopmotion/cubit/settings_global_cubit.dart';
import 'package:stopmotion/cubit/settings_activity_cubit.dart';
import 'package:stopmotion/common/cubit/nav/nav_cubit_pages.dart';
import 'package:stopmotion/common/cubit/nav/nav_cubit_screens.dart';
import 'package:stopmotion/config/application_config.dart';
import 'package:stopmotion/cubit/activity/activity_cubit.dart';
import 'package:stopmotion/cubit/settings/settings_activity_cubit.dart';
import 'package:stopmotion/cubit/settings/settings_global_cubit.dart';
import 'package:stopmotion/ui/skeleton.dart';
void main() async {
......@@ -41,18 +43,30 @@ class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider<NavCubitPage>(create: (context) => NavCubitPage()),
BlocProvider<NavCubitScreen>(create: (context) => NavCubitScreen()),
// default providers
BlocProvider<NavCubitPage>(
create: (context) => NavCubitPage(),
),
BlocProvider<NavCubitScreen>(
create: (context) => NavCubitScreen(),
),
BlocProvider<ApplicationThemeModeCubit>(
create: (context) => ApplicationThemeModeCubit()),
BlocProvider<ActivityCubit>(create: (context) => ActivityCubit()),
BlocProvider<GlobalSettingsCubit>(create: (context) => GlobalSettingsCubit()),
BlocProvider<ActivitySettingsCubit>(create: (context) => ActivitySettingsCubit()),
create: (context) => ApplicationThemeModeCubit(),
),
BlocProvider<ActivityCubit>(
create: (context) => ActivityCubit(),
),
BlocProvider<GlobalSettingsCubit>(
create: (context) => GlobalSettingsCubit(),
),
BlocProvider<ActivitySettingsCubit>(
create: (context) => ActivitySettingsCubit(),
),
],
child: BlocBuilder<ApplicationThemeModeCubit, ApplicationThemeModeState>(
builder: (BuildContext context, ApplicationThemeModeState state) {
return MaterialApp(
title: 'Stop Motion',
title: ApplicationConfig.appTitle,
home: const SkeletonScreen(),
// Theme stuff
......
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/config/screen.dart';
import 'package:stopmotion/cubit/activity_cubit.dart';
import 'package:stopmotion/cubit/nav_cubit_screens.dart';
class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
const GlobalAppBar({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<ActivityCubit, ActivityState>(
builder: (BuildContext context, ActivityState activityState) {
return BlocBuilder<NavCubitScreen, int>(
builder: (BuildContext context, int screenIndex) {
final List<Widget> menuActions = [];
if (screenIndex == Screen.indexActivity) {
// go to Settings page
menuActions.add(ElevatedButton(
onPressed: () {
BlocProvider.of<NavCubitScreen>(context).goToSettingsPage();
},
style: ElevatedButton.styleFrom(
shape: const CircleBorder(),
),
child: Screen.screenSettings.icon,
));
// go to About page
menuActions.add(ElevatedButton(
onPressed: () {
BlocProvider.of<NavCubitScreen>(context).goToAboutPage();
},
style: ElevatedButton.styleFrom(
shape: const CircleBorder(),
),
child: Screen.screenAbout.icon,
));
} else {
// back to Home page
menuActions.add(ElevatedButton(
onPressed: () {
BlocProvider.of<NavCubitScreen>(context).goToActivityPage();
},
style: ElevatedButton.styleFrom(
shape: const CircleBorder(),
),
child: Screen.screenActivity.icon,
));
}
return AppBar(
title: const AppHeader(text: 'app_name'),
actions: menuActions,
);
},
);
},
);
}
@override
Size get preferredSize => const Size.fromHeight(50);
}
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:stopmotion/config/screen.dart';
import 'package:stopmotion/cubit/nav_cubit_screens.dart';
import 'package:stopmotion/ui/nav/global_app_bar.dart';
import 'package:stopmotion/ui/nav/bottom_nav_bar.dart';
import 'package:stopmotion/common/config/activity_page.dart';
import 'package:stopmotion/common/config/screen.dart';
import 'package:stopmotion/common/cubit/nav/nav_cubit_screens.dart';
import 'package:stopmotion/common/ui/nav/global_app_bar.dart';
import 'package:stopmotion/common/ui/nav/bottom_nav_bar.dart';
class SkeletonScreen extends StatelessWidget {
const SkeletonScreen({super.key});
......@@ -28,8 +29,7 @@ class SkeletonScreen extends StatelessWidget {
),
),
backgroundColor: Theme.of(context).colorScheme.surface,
bottomNavigationBar:
Screen.displayBottomNavBar(screenIndex) ? const BottomNavBar() : null,
bottomNavigationBar: ActivityPage.displayBottomNavBar ? const BottomNavBar() : null,
);
},
);
......
......@@ -301,10 +301,10 @@ packages:
dependency: transitive
description:
name: path_provider
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
version: "2.1.5"
path_provider_android:
dependency: transitive
description:
......@@ -506,10 +506,10 @@ packages:
dependency: transitive
description:
name: win32
sha256: "2735daae5150e8b1dfeb3eb0544b4d3af0061e9e82cef063adcd583bdae4306a"
sha256: "10169d3934549017f0ae278ccb07f828f9d6ea21573bab0fb77b0e1ef0fce454"
url: "https://pub.dev"
source: hosted
version: "5.7.0"
version: "5.7.2"
xdg_directories:
dependency: transitive
description:
......
......@@ -3,7 +3,7 @@ description: stop motion assistant
publish_to: "none"
version: 0.2.1+13
version: 0.3.0+14
environment:
sdk: "^3.0.0"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment