40 lines
972 B
Dart
40 lines
972 B
Dart
|
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,
|
||
|
);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|