From 2f83ea290b4af2854eeb29299e3a71ca86e90fb8 Mon Sep 17 00:00:00 2001 From: Aunali321 Date: Sat, 20 Aug 2022 17:47:00 +0530 Subject: [PATCH] feat: root and nonroot toggle. --- assets/i18n/en.json | 4 ++- lib/ui/views/settings/settings_view.dart | 31 +++++++++++++++++++ lib/ui/views/settings/settings_viewmodel.dart | 13 ++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/assets/i18n/en.json b/assets/i18n/en.json index 0e30e911..83635156 100644 --- a/assets/i18n/en.json +++ b/assets/i18n/en.json @@ -69,7 +69,9 @@ "lightThemeLabel": "Light", "versionLabel": "Version", "aboutLabel": "About", - "contributorsLabel": "Contributors" + "contributorsLabel": "Contributors", + "rootModeLabel": "Root Mode", + "rootModeHint": "Enable this if you want to patch applications as rooted." }, "rootCheckerView": { "widgetTitle": "Is your device rooted?", diff --git a/lib/ui/views/settings/settings_view.dart b/lib/ui/views/settings/settings_view.dart index 60e4616c..e6e7d954 100644 --- a/lib/ui/views/settings/settings_view.dart +++ b/lib/ui/views/settings/settings_view.dart @@ -14,7 +14,9 @@ class SettingsView extends StatelessWidget { @override Widget build(BuildContext context) { return ViewModelBuilder.reactive( + disposeViewModel: false, viewModelBuilder: () => SettingsViewModel(), + onModelReady: (model) => model.initialize(), builder: (context, SettingsViewModel model, child) => Scaffold( body: SafeArea( child: Padding( @@ -51,6 +53,35 @@ class SettingsView extends StatelessWidget { }, ), ), + ListTile( + title: I18nText( + 'settingsView.rootModeLabel', + child: Text( + '', + style: kSettingItemTextStyle, + ), + ), + subtitle: I18nText('settingsView.rootModeHint'), + trailing: GestureDetector( + onTap: () { + model.navigateToRootChecker(); + }, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 8), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + border: Border.all( + width: 1, + color: Theme.of(context).colorScheme.secondary, + ), + ), + child: Text( + model.isRooted ? 'Rooted' : 'Not rooted', + ), + ), + ), + ), Container( padding: const EdgeInsets.symmetric( horizontal: 16.0, diff --git a/lib/ui/views/settings/settings_viewmodel.dart b/lib/ui/views/settings/settings_viewmodel.dart index d6567bb2..96312d14 100644 --- a/lib/ui/views/settings/settings_viewmodel.dart +++ b/lib/ui/views/settings/settings_viewmodel.dart @@ -1,9 +1,18 @@ import 'package:revanced_manager/app/app.locator.dart'; import 'package:revanced_manager/app/app.router.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:stacked/stacked.dart'; import 'package:stacked_services/stacked_services.dart'; class SettingsViewModel extends BaseViewModel { + bool isRooted = false; + + Future initialize() async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + isRooted = prefs.getBool('isRooted') ?? false; + notifyListeners(); + } + final NavigationService _navigationService = locator(); void setLanguage(String language) { @@ -13,4 +22,8 @@ class SettingsViewModel extends BaseViewModel { void navigateToContributors() { _navigationService.navigateTo(Routes.contributorsView); } + + void navigateToRootChecker() { + _navigationService.navigateTo(Routes.rootCheckerView); + } }