当渲染多个 widget 实例并调用 getValue 方法时,Flutter 会抛出错误“ScrollController attached to multiple scroll views”。我猜这是因为它们都在使用同一个控制器,但我不知道有没有更好的方法来修复它,而不必为每次使用它创建一个单独的widget。是否有更好的解决方法?
class NumScroller extends StatelessWidget{
final int max,min;
final double height,width;
final TextAlign alignment;
static ScrollController controller;
NumScroller({this.height,this.width,this.alignment,this.min,this.max, initialOffset}){
controller = new ScrollController(initialScrollOffset: initialOffset);
}
getValue() => (controller.offset~/height) + min;
@override
Widget build(BuildContext context) {
return new Container(
width: width,
height: height,
child: ListView.builder(itemBuilder: (context, index) {
return new Container(height: height, child:Text((max - index).toString(),textAlign: alignment,));
},
itemCount: max - min+1,
controller: controller,
physics: PageScrollPhysics(),
itemExtent: height,
)
);
}
}
Stateless
,我们也可以为每个小部件实例拥有一个控制器。 - Dinesh Balasubramanian