Я работаю с DraggableScrollableSheet во флаттере и хочу знать, свернут ли лист или развернут. Построитель DraggableScrollableSheet предоставляет 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
}





Вам просто нужно реструктурировать код. Определите свой метод _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'));
},
),
);
},
);
}