mirror of
https://github.com/revanced/revanced-manager.git
synced 2025-06-12 04:37:37 +02:00
fix: add animations and fix some UI incoherences
This commit is contained in:
@ -1,9 +1,13 @@
|
||||
import 'package:animations/animations.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_i18n/flutter_i18n.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:revanced_manager/app/app.locator.dart';
|
||||
import 'package:revanced_manager/theme.dart';
|
||||
import 'package:revanced_manager/ui/views/app_selector/app_selector_view.dart';
|
||||
import 'package:revanced_manager/ui/views/installer/installer_view.dart';
|
||||
import 'package:revanced_manager/ui/views/patcher/patcher_viewmodel.dart';
|
||||
import 'package:revanced_manager/ui/views/patches_selector/patches_selector_view.dart';
|
||||
import 'package:revanced_manager/ui/widgets/patcherView/app_selector_card.dart';
|
||||
import 'package:revanced_manager/ui/widgets/patcherView/patch_selector_card.dart';
|
||||
import 'package:stacked/stacked.dart';
|
||||
@ -19,17 +23,24 @@ class PatcherView extends StatelessWidget {
|
||||
builder: (context, model, child) => Scaffold(
|
||||
floatingActionButton: Visibility(
|
||||
visible: model.showPatchButton(),
|
||||
child: FloatingActionButton.extended(
|
||||
label: I18nText('patcherView.patchButton'),
|
||||
icon: const Icon(Icons.build),
|
||||
onPressed: () => model.navigateToInstaller(),
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(16.0),
|
||||
),
|
||||
child: OpenContainer(
|
||||
transitionDuration: const Duration(milliseconds: 400),
|
||||
openBuilder: (_, openContainer) => const InstallerView(),
|
||||
openColor: Theme.of(context).colorScheme.primary,
|
||||
closedColor: Colors.transparent,
|
||||
closedShape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
closedBuilder: (_, openContainer) => FloatingActionButton.extended(
|
||||
label: I18nText('patcherView.patchButton'),
|
||||
icon: const Icon(Icons.build),
|
||||
onPressed: openContainer,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
backgroundColor: Theme.of(context).colorScheme.secondary,
|
||||
foregroundColor: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
backgroundColor: Theme.of(context).colorScheme.secondary,
|
||||
foregroundColor: Colors.white,
|
||||
),
|
||||
),
|
||||
body: CustomScrollView(
|
||||
@ -69,20 +80,39 @@ class PatcherView extends StatelessWidget {
|
||||
sliver: SliverList(
|
||||
delegate: SliverChildListDelegate.fixed(
|
||||
<Widget>[
|
||||
AppSelectorCard(
|
||||
onPressed: model.navigateToAppSelector,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
OpenContainer(
|
||||
transitionDuration: const Duration(milliseconds: 400),
|
||||
openBuilder: (_, openContainer) =>
|
||||
const AppSelectorView(),
|
||||
openColor: Theme.of(context).colorScheme.primary,
|
||||
closedColor: Colors.transparent,
|
||||
closedShape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
closedBuilder: (_, openContainer) => AppSelectorCard(
|
||||
onPressed: openContainer,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Opacity(
|
||||
opacity: isDark
|
||||
? (model.dimPatchesCard() ? 0.5 : 1)
|
||||
: (model.dimPatchesCard() ? 0.75 : 1),
|
||||
child: PatchSelectorCard(
|
||||
onPressed: model.dimPatchesCard()
|
||||
? () => {}
|
||||
: model.navigateToPatchesSelector,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
child: OpenContainer(
|
||||
transitionDuration: const Duration(milliseconds: 400),
|
||||
openBuilder: (_, openContainer) =>
|
||||
const PatchesSelectorView(),
|
||||
openColor: Theme.of(context).colorScheme.primary,
|
||||
closedColor: Colors.transparent,
|
||||
closedShape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
closedBuilder: (_, openContainer) => PatchSelectorCard(
|
||||
onPressed:
|
||||
model.dimPatchesCard() ? () => {} : openContainer,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -1,30 +1,13 @@
|
||||
import 'package:injectable/injectable.dart';
|
||||
import 'package:revanced_manager/app/app.locator.dart';
|
||||
import 'package:revanced_manager/app/app.router.dart';
|
||||
import 'package:revanced_manager/models/patch.dart';
|
||||
import 'package:revanced_manager/models/patched_application.dart';
|
||||
import 'package:stacked/stacked.dart';
|
||||
import 'package:stacked_services/stacked_services.dart';
|
||||
|
||||
@lazySingleton
|
||||
class PatcherViewModel extends BaseViewModel {
|
||||
PatchedApplication? selectedApp;
|
||||
List<Patch> selectedPatches = [];
|
||||
|
||||
final NavigationService _navigationService = locator<NavigationService>();
|
||||
|
||||
void navigateToAppSelector() {
|
||||
_navigationService.navigateTo(Routes.appSelectorView);
|
||||
}
|
||||
|
||||
void navigateToPatchesSelector() {
|
||||
_navigationService.navigateTo(Routes.patchesSelectorView);
|
||||
}
|
||||
|
||||
void navigateToInstaller() {
|
||||
_navigationService.navigateTo(Routes.installerView);
|
||||
}
|
||||
|
||||
bool showPatchButton() {
|
||||
return selectedPatches.isNotEmpty;
|
||||
}
|
||||
|
Reference in New Issue
Block a user