首页 > 解决方案 > 单击 List Tile 时,我想滚动整个页面

问题描述

我有一个列表视图包装在另一个列表视图中。内部列表视图不应该是可滚动的我希望当用户关闭应用程序单击列表磁贴时,整个页面向下滚动。所以顶部消失了,用户可以看到列表视图的其余部分。现在这是可能的,但只有当用户点击外部屏幕的小边缘时。当有人单击 ListTile directyl 时,没有任何反应。

这是外部列表视图

ListView(children: <Widget>[
      new Column(children: <Widget>[
        Container(
            child: Stack(
          alignment: Alignment.bottomCenter,
          overflow: Overflow.visible,

这是内部 ListView

Container(
            padding: EdgeInsets.only(left: 20.0, right: 20.0),
            child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  ListView(
                    physics: const AlwaysScrollableScrollPhysics(),
                    controller: _list,
                    scrollDirection: Axis.vertical,
                    shrinkWrap: true,
                    padding: const EdgeInsets.all(8.0),
                    children: <Widget>[
                      Card(
                          child: ListTile(
                        leading: ConstrainedBox(

标签: listviewflutterscroll

解决方案


请使用 ScrollController.jumpTo() 或 ScrollController.animateTo() 方法来实现这一点。

例如:

class _HomeScreenState extends State<HomeScreen> {
  ScrollController _ScrollController = ScrollController();
  @override
  Widget build(BuildContext context) {
    Timer(Duration(milliseconds: 1000), () => _ScrollController.jumpTo(_ScrollController.position.maxScrollExtent));

    return ListView.builder(
      controller: _controller,
        itemCount: 50,
        itemBuilder: (context, index) => ListTile(title: Text("ListTile"),));
  }
}

你和这个在你想滚动的任何列表上。您还可以使用以下代码禁用滚动。

物理:常量 NeverScrollableScrollPhysics()


推荐阅读