add buildlogprovider to handle scrolling from outside widget
This commit is contained in:
		@@ -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 {
 | 
			
		||||
@@ -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 {
 | 
			
		||||
@@ -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 {
 | 
			
		||||
@@ -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 {
 | 
			
		||||
@@ -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;
 | 
			
		||||
@@ -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 {
 | 
			
		||||
							
								
								
									
										39
									
								
								frontend/lib/providers/build_log_provider.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								frontend/lib/providers/build_log_provider.dart
									
									
									
									
									
										Normal 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,
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user