首页 > 解决方案 > Flutter 中的可滚动列表视图与 Dart

问题描述

有人可以解释一下我应该在哪里定义滚动控制器吗?我有聊天列表视图,它是可滚动视图的主体。我希望能够控制滚动行为,MainView但不知道如何将控制器向下传递到_ChatListView. 有任何想法吗?

主视图.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,
          );
    }
}

标签: dartfluttermobile-development

解决方案


添加构造函数并将控制器作为参数传递

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

推荐阅读