在我的颤振应用程序中,我尝试使用 scrollController 在 listBuilder 中滚动列表视图,但 ScrollController 无法正常工作。它不显示错误或异常,但列表不滚动。即使我使用滚动控制器 jumpTo 或 animateTo 它也不起作用。即使我在 animateTo 和 jumpTo 中给出 1000 和 20000 之类的最大值,它也不会滚动。
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
class Class extends StatefulWidget {
final int data;
final List list;
Class({required this.data, required this.list});
@override
_ClassState createState() => _ClassState();
}
class _ClassState extends State<Class> with TickerProviderStateMixin {
late Animation<double> animation;
late AnimationController animationController;
late double height = 0;
final List lst = [
[true, true, true, true],
[false, false, false, false],
[true, false, false, false],
[true, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
];
void initState() {
super.initState();
animationController =
AnimationController(vsync: this, duration: Duration(seconds: 5));
animation = Tween<double>(begin: 0, end: 200).animate(animationController)
..addListener(() {
setState(() {});
})
..addStatusListener((status) {});
animationController.forward();
}
Widget container(data) {
return Stack(
children: [
GestureDetector(
onTap: () {
setState(() {
animationController.forward();
});
},
child: Transform.translate(
offset: Offset(0, animation.value),
child: Container(
color: lst[data][0] ? Colors.black : Colors.transparent,
height: MediaQuery.of(context).size.height / 4,
width: MediaQuery.of(context).size.width / 4,
child: Text('$data'),
),
),
),
],
);
}
@override
Widget build(BuildContext context) {
return container(widget.data);
}
@override
void dispose() {
super.dispose();
animationController.dispose();
}
}
class Yes extends StatefulWidget {
@override
_YesState createState() => _YesState();
}
class _YesState extends State<Yes> {
List lst = [
[true, true, true, true],
[false, false, false, false],
[true, false, false, false],
[true, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
[false, false, false, false],
[true, false, false, false],
];
ScrollController _scrollController = ScrollController();
void initState() {
if (_scrollController.hasClients) {
super.initState();
// _scrollController.animateTo(0,
// // _scrollController.offset + MediaQuery.of(context).size.height/6,
// duration: Duration(seconds: 2),
// curve: Curves.linear);
_scrollController.jumpTo(_scrollController.position.maxScrollExtent);
}
}
@override
Widget build(BuildContext context) {
return ListView(
controller: _scrollController,
// physics: NeverScrollableScrollPhysics(),
children: [
ListView.builder(
// physics: NeverScrollableScrollPhysics(),
reverse: true,
itemCount: lst.length,
controller: _scrollController,
itemBuilder: (BuildContext context, int position) {
return Stack(children: [Class(data: position, list: lst)]);
}),
],
);
}
}