带有 Dart 的 Flutter 中的可滚动列表视图

Scrollable Listview in Flutter with Dart

谁能告诉我应该在哪里定义滚动控制器?我有聊天列表视图,它是可滚动视图的主体。我希望能够从 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()
        );
    }
}

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,
          );
    }
}