fix: auto scroll on installer

This commit is contained in:
Alberto Ponces 2022-08-22 00:49:09 +01:00
parent 95739244fa
commit 092d645726
2 changed files with 11 additions and 7 deletions

View file

@ -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<InstallerViewModel>.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: <Widget>[
@ -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,

View file

@ -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<PatcherAPI>();
final PatchedApplication? _app = locator<PatcherViewModel>().selectedApp;
final List<Patch> _patches = locator<PatcherViewModel>().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();
}
}