【问题标题】:Create a new element once a user scrolled to the end of the list FLUTTER一旦用户滚动到列表的末尾,创建一个新元素 FLUTTER
【发布时间】:2019-07-26 11:13:15
【问题描述】:

我有一个listview,里面有一些文本字段,我认为一旦用户向下滚动添加文本字段会很酷, 例如:

当用户到达第五个元素并继续向下滚动创建一个新元素后,我们在 ListView 中有 5 个元素。 我找不到这个任务的解决方案,我试图检查元素的滚动位置,但不幸的是,我得到了一个错误

flutter:抛出了另一个异常:NoSuchMethodError: The getter 'position' 在 null 上被调用。

这是代码..

ScrollController _controller;

  @override
  void initState() {
    super.initState();
    _controller = ScrollController();
  }

FlatButton(
                    onPressed: () {
                      print(_controller.position.minScrollExtent);
                    },
                    child: Text('ds'),
                  ),

ListView
 - controller: _controller

【问题讨论】:

    标签: flutter dart scroll


    【解决方案1】:

    如果您想在列表视图的末尾添加新元素,这是一种解决方案

    ScrollController _controller;
    
    ListView.builder(
                  controller: _controller,
                  itemCount: _items.length,
                  itemBuilder: (context, index) {
                    return ListTile(title: Text("Index : $index"));
                  },
                )
    
    
    @override
      void initState() {
        _controller = ScrollController();
        _controller.addListener(_scrollListener);
        super.initState();
      }
    
    
    _scrollListener() {
        if (_controller.offset >= _controller.position.maxScrollExtent &&
            !_controller.position.outOfRange) {
          setState(() {
            message = "reach the bottom";
          });
        }
        if (_controller.offset <= _controller.position.minScrollExtent &&
            !_controller.position.outOfRange) {
          setState(() {
            message = "reach the top";
          });
        }
      }
    

    maxScrollExtent 中,您需要将元素添加到列表视图中。希望对你有帮助。

    欲了解更多信息,请访问here

    【讨论】:

    • 很好,它可以工作,但我该怎么做 - 当它到达底部时,你需要再滚动一点,比如 50 像素,这样我就可以在那里创建一个新的文本字段
    • Sunny,谢谢你让我看到的真相。 Sunny,感谢 Bobby Hebb 提供的从 A 到 Z 的事实
    【解决方案2】:

    要创建具有动态子代数量的ListView,您可能需要查看ListView.builder 工厂构造函数。

    ListView.builder(
      itemBuilder: (context, i) => Text('$i'),
    )
    

    查看"Working with long lists" 教程了解更多信息。

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多