From 092d64572688fa857c36f0ff59a0ac70648dc450 Mon Sep 17 00:00:00 2001 From: Alberto Ponces Date: Mon, 22 Aug 2022 00:49:09 +0100 Subject: [PATCH] fix: auto scroll on installer --- lib/ui/views/installer/installer_view.dart | 10 +++------- lib/ui/views/installer/installer_viewmodel.dart | 8 ++++++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/ui/views/installer/installer_view.dart b/lib/ui/views/installer/installer_view.dart index b7a18657..e42efec5 100644 --- a/lib/ui/views/installer/installer_view.dart +++ b/lib/ui/views/installer/installer_view.dart @@ -5,14 +5,10 @@ import 'package:revanced_manager/ui/views/installer/installer_viewmodel.dart'; import 'package:stacked/stacked.dart'; class InstallerView extends StatelessWidget { - InstallerView({Key? key}) : super(key: key); - final ScrollController _controller = ScrollController(); + const InstallerView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { - WidgetsBinding.instance.addPostFrameCallback( - (_) => _controller.jumpTo(_controller.position.maxScrollExtent), - ); return ViewModelBuilder.reactive( onModelReady: (model) => model.initialize(context), viewModelBuilder: () => InstallerViewModel(), @@ -36,7 +32,7 @@ class InstallerView extends StatelessWidget { body: SafeArea( child: SingleChildScrollView( padding: const EdgeInsets.symmetric(horizontal: 12), - controller: _controller, + controller: model.scrollController, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -78,7 +74,7 @@ class InstallerView extends StatelessWidget { color: Theme.of(context).colorScheme.primary, borderRadius: BorderRadius.circular(8), ), - child: SelectableText( + child: Text( model.logs, style: GoogleFonts.jetBrainsMono( fontSize: 13, diff --git a/lib/ui/views/installer/installer_viewmodel.dart b/lib/ui/views/installer/installer_viewmodel.dart index 46ba4e39..d6ec89a5 100644 --- a/lib/ui/views/installer/installer_viewmodel.dart +++ b/lib/ui/views/installer/installer_viewmodel.dart @@ -13,6 +13,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:stacked/stacked.dart'; class InstallerViewModel extends BaseViewModel { + final ScrollController scrollController = ScrollController(); final PatcherAPI _patcherAPI = locator(); final PatchedApplication? _app = locator().selectedApp; final List _patches = locator().selectedPatches; @@ -83,6 +84,13 @@ class InstallerViewModel extends BaseViewModel { logs += '\n'; } logs += message; + Future.delayed(const Duration(milliseconds: 500)).then((value) { + scrollController.animateTo( + scrollController.position.maxScrollExtent, + duration: const Duration(milliseconds: 200), + curve: Curves.fastOutSlowIn, + ); + }); notifyListeners(); } }