我正在使用Flutter中的DraggableScrollableSheet,并想知道该表是否已折叠或展开。DraggableScrollableSheet的构建器提供了一个scrollController,我将其附加到监听器上。
我看到了这个有用的指南,但他们创建了一个ScrollController,而在我的情况下,scrollController由构造函数提供。我不明白如何获得他们相同的行为。
这是我的代码:
我看到了这个有用的指南,但他们创建了一个ScrollController,而在我的情况下,scrollController由构造函数提供。我不明白如何获得他们相同的行为。
这是我的代码:
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SizedBox.expand(
child: myBottomSheet()
),
);
}
}
class myBottomSheet extends StatefulWidget{
@override
_myBottomSheetState createState() => _myBottomSheetState();
}
class _myBottomSheetState extends State<myBottomSheet> {
double appbarSize=0.08;
@override
Widget build(BuildContext context) {
return DraggableScrollableSheet(
maxChildSize: 0.8,
minChildSize: appbarSize,
initialChildSize: appbarSize,
builder: (BuildContext context, ScrollController scrollController) {
scrollController.addListener(_scrollListener); // <----------------
return Container(
child: ListView.builder(
controller: scrollController,
itemCount: 25,
itemBuilder: (BuildContext context, int index) {
return ListTile(title: Text('Item $index'));
},
),
);
},
);
}
_scrollListener(){
//use controller such in the guide
}
initState
中添加一次监听器(你在每次调用build
时都添加了一个监听器!你可能会为同一个控制器添加数百个监听器!);(2)你需要在dispose
中处理监听器。 - Luke Hutchison