滚动控制器和刷新指示器不起作用

时间:2018-10-05 02:17:53

标签: dart flutter

我有一个扑朔迷离的项目, 当我尝试创建invinite listview但滚动控制器不起作用时,没有错误。 刷新指示器也不起作用,但是如果listview上的主要为false则刷新工作。

有关信息,如果主列表设置为false,则我的列表视图不起作用,因为此列表视图位于main.dart的列表视图内 代码

List<dynamic> list = [];
ScrollController _scrollController = ScrollController();

void initState() {
    super.initState();
    _loadData();
    _scrollController.addListener(() {
      if (_scrollController.position.pixels ==
          _scrollController.position.maxScrollExtent - 50) {
        _loadData();
      }
    });
  }

  @override
  void dispose() {
    _scrollController.dispose();
    super.dispose();
  }

  Future<dynamic> _loadData() {
    var offset = list.length;
    return Api().postData("resto",
        body: <String, String>{"offset": "$offset"}).then((dynamic res) {
      if (res["error"]) throw new Exception(res["msg"]);
      setState(() {
        list.addAll(res['data']);
      });
    });
  }

@override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.end,
      children: <Widget>[
        FlatButton(
          child: Text(
            "Filter Popularity",
            style: TextStyle(color: Colors.red),
          ),
          onPressed: () {},
        ),
        Padding(
            padding: const EdgeInsets.all(8.0),
            child: list.length == 0 ? _shimmer() : _listResto()),
      ],
    );
  }

  Widget _listResto() {
    return ListView.builder(
      controller: _scrollController,
      primary: false,
      shrinkWrap: true,
      itemCount: list == null ? 0 : list.length,
      itemBuilder: (context, i) {

1 个答案:

答案 0 :(得分:1)

physics: const AlwaysScrollableScrollPhysics()添加到RefreshIndicator

body: RefreshIndicator(
        onRefresh: _refreshList,
        child: ListView.builder(
          controller: _scrollController,
          physics: const AlwaysScrollableScrollPhysics(),
          itemCount: items.length,
          itemBuilder: (context, index) => ListTile(
                title: Text('Item ${items[index]}'),
              ),
        ),
      )