有人能解释一下我应该在哪里定义滚动控制器吗?我有聊天列表视图,它是一个可滚动视图的主体。我希望能够从MainView
控制滚动行为,但不知道如何将控制器向下传递到_ChatListView
。有什么想法吗?
mainview.dart
class MainView extends StatelessWidget {
...
// is this the correct place?
final ScrollController scrollController = ScrollController();
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new ChatListView()
);
}
}
聊天列表视图.dart
class ChatListView extends StatefulWidget {
@override
_ChatListView createState() => _ChatListView();
}
class _ChatListView extends State< ChatListView > {
Widget build(BuildContext context) {
return ListView.builder(
controller: scrollController,
);
}
}
添加一个构造函数并将控制器作为参数传递
class MainView extends StatelessWidget {
...
// is this the correct place?
final ScrollController scrollController = ScrollController();
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new ChatListView(scrollController: scrollController)
);
}
}
class ChatListView extends StatefulWidget {
ChatListView({@required this.scrollController});
final ScrollController scrollController;
@override
_ChatListView createState() => _ChatListView();
}
class _ChatListView extends State< ChatListView > {
Widget build(BuildContext context) {
return ListView.builder(
controller: widget.scrollController,
);
}
}