diff --git a/lib/app/app.dart b/lib/app/app.dart index 1fac4b7c..9bbd16e9 100644 --- a/lib/app/app.dart +++ b/lib/app/app.dart @@ -1,11 +1,11 @@ -import 'package:revanced_manager/main.dart'; -import 'package:revanced_manager/main_viewmodel.dart'; import 'package:revanced_manager/services/manager_api.dart'; import 'package:revanced_manager/services/patcher_api.dart'; import 'package:revanced_manager/ui/views/app_selector/app_selector_view.dart'; import 'package:revanced_manager/ui/views/contributors/contributors_view.dart'; import 'package:revanced_manager/ui/views/home/home_viewmodel.dart'; import 'package:revanced_manager/ui/views/installer/installer_view.dart'; +import 'package:revanced_manager/ui/views/navigation/navigation_view.dart'; +import 'package:revanced_manager/ui/views/navigation/navigation_viewmodel.dart'; import 'package:revanced_manager/ui/views/patcher/patcher_view.dart'; import 'package:revanced_manager/ui/views/patcher/patcher_viewmodel.dart'; import 'package:revanced_manager/ui/views/patches_selector/patches_selector_view.dart'; @@ -16,7 +16,7 @@ import 'package:stacked_services/stacked_services.dart'; @StackedApp( routes: [ - MaterialRoute(page: Navigation), + MaterialRoute(page: NavigationView), MaterialRoute(page: PatcherView), MaterialRoute(page: AppSelectorView), MaterialRoute(page: PatchesSelectorView), @@ -26,7 +26,7 @@ import 'package:stacked_services/stacked_services.dart'; MaterialRoute(page: RootCheckerView), ], dependencies: [ - LazySingleton(classType: MainViewModel), + LazySingleton(classType: NavigationViewModel), LazySingleton(classType: HomeViewModel), LazySingleton(classType: PatcherViewModel), LazySingleton(classType: NavigationService), diff --git a/lib/main.dart b/lib/main.dart index dfa5eadc..a44aa11e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,18 +1,13 @@ -import 'package:animations/animations.dart'; import 'package:flutter/material.dart'; import 'package:flutter_i18n/flutter_i18n.dart'; // ignore: depend_on_referenced_packages import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:revanced_manager/app/app.locator.dart'; -import 'package:revanced_manager/main_viewmodel.dart'; import 'package:revanced_manager/services/manager_api.dart'; import 'package:revanced_manager/services/patcher_api.dart'; import 'package:revanced_manager/ui/theme/dynamic_theme_builder.dart'; -import 'package:revanced_manager/ui/views/home/home_view.dart'; -import 'package:revanced_manager/ui/views/patcher/patcher_view.dart'; +import 'package:revanced_manager/ui/views/navigation/navigation_view.dart'; import 'package:revanced_manager/ui/views/root_checker/root_checker_view.dart'; -import 'package:revanced_manager/ui/views/settings/settings_view.dart'; -import 'package:stacked/stacked.dart'; import 'package:stacked_themes/stacked_themes.dart'; Future main() async { @@ -62,79 +57,8 @@ class MyApp extends StatelessWidget { await locator().initialize(); bool? isRooted = locator().isRooted(); if (isRooted != null) { - return const Navigation(); + return const NavigationView(); } return const RootCheckerView(); } } - -class Navigation extends StatelessWidget { - const Navigation({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return ViewModelBuilder.reactive( - viewModelBuilder: () => locator(), - builder: (context, model, child) => Scaffold( - body: PageTransitionSwitcher( - duration: const Duration(milliseconds: 400), - transitionBuilder: ( - Widget child, - Animation animation, - Animation secondaryAnimation, - ) { - return FadeThroughTransition( - animation: animation, - secondaryAnimation: secondaryAnimation, - fillColor: Theme.of(context).colorScheme.surface, - child: child, - ); - }, - child: getViewForIndex(model.currentIndex), - ), - bottomNavigationBar: NavigationBar( - onDestinationSelected: model.setIndex, - selectedIndex: model.currentIndex, - destinations: [ - NavigationDestination( - icon: const Icon( - Icons.dashboard, - ), - label: FlutterI18n.translate( - context, - 'main.dashboardTab', - ), - ), - NavigationDestination( - icon: const Icon(Icons.build), - label: FlutterI18n.translate( - context, - 'main.patcherTab', - ), - ), - NavigationDestination( - icon: const Icon(Icons.settings), - label: FlutterI18n.translate( - context, - 'main.settingsTab', - ), - ), - ], - ), - ), - ); - } - - Widget getViewForIndex(int index) { - switch (index) { - case 0: - return const HomeView(); - case 1: - return const PatcherView(); - case 2: - return SettingsView(); - default: - return const HomeView(); - } - } -} diff --git a/lib/main_viewmodel.dart b/lib/main_viewmodel.dart deleted file mode 100644 index 94929b92..00000000 --- a/lib/main_viewmodel.dart +++ /dev/null @@ -1,5 +0,0 @@ -import 'package:injectable/injectable.dart'; -import 'package:stacked/stacked.dart'; - -@lazySingleton -class MainViewModel extends IndexTrackingViewModel {} diff --git a/lib/ui/views/home/home_viewmodel.dart b/lib/ui/views/home/home_viewmodel.dart index e5d61c88..d0971d69 100644 --- a/lib/ui/views/home/home_viewmodel.dart +++ b/lib/ui/views/home/home_viewmodel.dart @@ -8,10 +8,10 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:injectable/injectable.dart'; import 'package:revanced_manager/app/app.locator.dart'; -import 'package:revanced_manager/main_viewmodel.dart'; import 'package:revanced_manager/models/patched_application.dart'; import 'package:revanced_manager/services/manager_api.dart'; import 'package:revanced_manager/services/patcher_api.dart'; +import 'package:revanced_manager/ui/views/navigation/navigation_viewmodel.dart'; import 'package:revanced_manager/ui/views/patcher/patcher_viewmodel.dart'; import 'package:stacked/stacked.dart'; @@ -46,7 +46,7 @@ class HomeViewModel extends BaseViewModel { locator().selectedPatches = await _patcherAPI.getAppliedPatches(app.appliedPatches); locator().notifyListeners(); - locator().setIndex(1); + locator().setIndex(1); } void _getPatchedApps() { diff --git a/lib/ui/views/navigation/navigation_view.dart b/lib/ui/views/navigation/navigation_view.dart new file mode 100644 index 00000000..c595644e --- /dev/null +++ b/lib/ui/views/navigation/navigation_view.dart @@ -0,0 +1,64 @@ +import 'package:animations/animations.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_i18n/flutter_i18n.dart'; +import 'package:revanced_manager/app/app.locator.dart'; +import 'package:revanced_manager/ui/views/navigation/navigation_viewmodel.dart'; +import 'package:stacked/stacked.dart'; + +class NavigationView extends StatelessWidget { + const NavigationView({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return ViewModelBuilder.reactive( + viewModelBuilder: () => locator(), + builder: (context, model, child) => Scaffold( + body: PageTransitionSwitcher( + duration: const Duration(milliseconds: 400), + transitionBuilder: ( + Widget child, + Animation animation, + Animation secondaryAnimation, + ) { + return FadeThroughTransition( + animation: animation, + secondaryAnimation: secondaryAnimation, + fillColor: Theme.of(context).colorScheme.surface, + child: child, + ); + }, + child: model.getViewForIndex(model.currentIndex), + ), + bottomNavigationBar: NavigationBar( + onDestinationSelected: model.setIndex, + selectedIndex: model.currentIndex, + destinations: [ + NavigationDestination( + icon: const Icon( + Icons.dashboard, + ), + label: FlutterI18n.translate( + context, + 'main.dashboardTab', + ), + ), + NavigationDestination( + icon: const Icon(Icons.build), + label: FlutterI18n.translate( + context, + 'main.patcherTab', + ), + ), + NavigationDestination( + icon: const Icon(Icons.settings), + label: FlutterI18n.translate( + context, + 'main.settingsTab', + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/ui/views/navigation/navigation_viewmodel.dart b/lib/ui/views/navigation/navigation_viewmodel.dart new file mode 100644 index 00000000..247f0b34 --- /dev/null +++ b/lib/ui/views/navigation/navigation_viewmodel.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; +import 'package:injectable/injectable.dart'; +import 'package:revanced_manager/ui/views/home/home_view.dart'; +import 'package:revanced_manager/ui/views/patcher/patcher_view.dart'; +import 'package:revanced_manager/ui/views/settings/settings_view.dart'; +import 'package:stacked/stacked.dart'; + +@lazySingleton +class NavigationViewModel extends IndexTrackingViewModel { + Widget getViewForIndex(int index) { + switch (index) { + case 0: + return const HomeView(); + case 1: + return const PatcherView(); + case 2: + return SettingsView(); + default: + return const HomeView(); + } + } +} diff --git a/lib/ui/views/patches_selector/patches_selector_view.dart b/lib/ui/views/patches_selector/patches_selector_view.dart index 26943361..646f4388 100644 --- a/lib/ui/views/patches_selector/patches_selector_view.dart +++ b/lib/ui/views/patches_selector/patches_selector_view.dart @@ -62,7 +62,7 @@ class _PatchesSelectorViewState extends State { onSelectAll: (value) => model.selectAllPatches(value), ), const SizedBox(height: 12), - //TODO:IMPROVE THIS BAD CODE!! + // TODO: IMPROVE THIS BAD CODE Expanded( child: ListView( padding: const EdgeInsets.only(bottom: 80), diff --git a/lib/ui/views/root_checker/root_checker_viewmodel.dart b/lib/ui/views/root_checker/root_checker_viewmodel.dart index a4e89e66..55a97964 100644 --- a/lib/ui/views/root_checker/root_checker_viewmodel.dart +++ b/lib/ui/views/root_checker/root_checker_viewmodel.dart @@ -27,6 +27,6 @@ class RootCheckerViewModel extends BaseViewModel { Future navigateToHome() async { _managerAPI.setIsRooted(isRooted); - _navigationService.navigateTo(Routes.navigation); + _navigationService.navigateTo(Routes.navigationView); } } diff --git a/lib/ui/widgets/patchesSelectorView/patch_item.dart b/lib/ui/widgets/patchesSelectorView/patch_item.dart index a21b23fe..e7ce7b55 100644 --- a/lib/ui/widgets/patchesSelectorView/patch_item.dart +++ b/lib/ui/widgets/patchesSelectorView/patch_item.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_i18n/flutter_i18n.dart'; -import 'package:revanced_manager/ui/widgets/patchesSelectorView/patch_options_fields.dart'; import 'package:revanced_manager/ui/widgets/installerView/custom_material_button.dart'; import 'package:revanced_manager/ui/widgets/shared/custom_card.dart'; diff --git a/lib/ui/widgets/patchesSelectorView/patch_options_fields.dart b/lib/ui/widgets/patchesSelectorView/patch_options_fields.dart index dfb1d414..442d898a 100644 --- a/lib/ui/widgets/patchesSelectorView/patch_options_fields.dart +++ b/lib/ui/widgets/patchesSelectorView/patch_options_fields.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_i18n/flutter_i18n.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:revanced_manager/models/patch.dart'; class OptionsTextField extends StatelessWidget { final String hint;