我正在处理DraggableScrollableSheet,我想知道工作表是折叠还是展开。 DraggableScrollableSheet的构建器提供了一个scrollController,我向其附加了一个侦听器。
我看到了这个helpful guide,但是它们创建了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
}
答案 0 :(得分:1)
您只需要重组代码。在构建器中定义_scrollListener方法。
参见下文:
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) {
_scrollListener(){
//use controller such in the guide
}
scrollController.addListener(_scrollListener); // <----------------
return Container(
child: ListView.builder(
controller: scrollController,
itemCount: 25,
itemBuilder: (BuildContext context, int index) {
return ListTile(title: Text('Item $index'));
},
),
);
},
);
}