add buildlogprovider to handle scrolling from outside widget

This commit is contained in:
2024-02-16 22:37:35 +01:00
committed by Lukas-Heiligenbrunner
parent 7ea241112c
commit 598159a2bc
19 changed files with 142 additions and 96 deletions

View File

@ -1,7 +1,7 @@
import 'package:aurcache/api/aur.dart';
import 'package:aurcache/models/aur_package.dart';
import '../api/API.dart';
import '../../api/API.dart';
import 'BaseProvider.dart';
class AurSearchDTO {

View File

@ -1,7 +1,7 @@
import 'package:aurcache/api/builds.dart';
import '../api/API.dart';
import '../models/build.dart';
import '../../api/API.dart';
import '../../models/build.dart';
import 'BaseProvider.dart';
class BuildDTO {

View File

@ -1,7 +1,7 @@
import 'package:aurcache/api/builds.dart';
import '../api/API.dart';
import '../models/build.dart';
import '../../api/API.dart';
import '../../models/build.dart';
import 'BaseProvider.dart';
class BuildsDTO {

View File

@ -1,7 +1,7 @@
import 'package:aurcache/api/packages.dart';
import '../api/API.dart';
import '../models/package.dart';
import '../../api/API.dart';
import '../../models/package.dart';
import 'BaseProvider.dart';
class PackageDTO {

View File

@ -1,8 +1,8 @@
import 'package:aurcache/api/packages.dart';
import 'package:aurcache/providers/BaseProvider.dart';
import 'package:aurcache/providers/api/BaseProvider.dart';
import '../api/API.dart';
import '../models/package.dart';
import '../../api/API.dart';
import '../../models/package.dart';
class PackagesDTO {
final int limit;

View File

@ -1,6 +1,6 @@
import 'package:aurcache/api/statistics.dart';
import '../api/API.dart';
import '../../api/API.dart';
import 'BaseProvider.dart';
class StatsProvider extends BaseProvider {

View File

@ -0,0 +1,39 @@
import 'package:flutter/widgets.dart';
class BuildLogProvider with ChangeNotifier {
final scrollController = ScrollController();
bool followLog = true;
set follow_log(bool value) {
followLog = value;
notifyListeners();
}
void go_to_bottom() {
_scrollToBottom();
}
void go_to_top() {
final scrollPosition = scrollController.position;
scrollController.animateTo(
scrollPosition.minScrollExtent,
duration: const Duration(milliseconds: 200),
curve: Curves.easeOut,
);
}
void _scrollToBottom() {
WidgetsBinding.instance.addPostFrameCallback((_) {
// scroll to bottom
final scrollPosition = scrollController.position;
if (scrollPosition.viewportDimension < scrollPosition.maxScrollExtent) {
scrollController.animateTo(
scrollPosition.maxScrollExtent,
duration: const Duration(milliseconds: 200),
curve: Curves.easeOut,
);
}
});
}
}