listview被SingleChildScrollView、c

2020-04-20  本文已影响0人  晓函

方案一:listView加上下面2个属性就解决了

//shrinkWrap和physics,在被Column或者SingleChildScrollView嵌套时候可以正常绘制
        shrinkWrap: true, 
        physics:ClampingScrollPhysics(),   

方案二:在Column里面等listview加上Expanded

Column(children:<Widget>[Container(),Expanded(child:ListView())]);

完整代码


  Widget buildPage(BuildContext context){

    widgetListviewFans(){
      if(_listFans==null || _listFans.length==0)
        return Center(child:(_loadTips==null||_loadTips.isEmpty)?Text(_defaultLoading):Text(_loadTips));

      return ListView.builder(
        scrollDirection: Axis.vertical,
        itemCount: _listFans.length,
        itemBuilder: (context,i){
          return buildItem(context, _listFans[i]);
        },
        padding: EdgeInsets.fromLTRB(_blockMargin,5,_blockMargin,5),
        //shrinkWrap和physics,在被Column或者SingleChildScrollView嵌套时候可以正常绘制
        shrinkWrap: true, 
        physics:NeverScrollableScrollPhysics(),   
      );
    }

    widgetEasyRefresh(){
      return
      EasyRefresh(
        child:SingleChildScrollView(
          child:Column(children:<Widget>[
            Container(child: Text('this test'), height: 20,width: 120,),     
            widgetListviewFans()
          ])
        ),
        header:refreshHeader,
        footer: refreshFooter,
        onRefresh: () async{
          _page=1;
          setState(() {
            _listFans = null;
          }); 
          getFansList();

        },
        onLoad: () async{
          if(_hasNext)
          {
            _page++;      
            getFansList();
          }else{
            Toast.toast(context,msg: "没有更多啦");
          }
        
        },

      ); 
    }


    return Container(
      child: widgetEasyRefresh(),
      color: Color(0xFFEEEEEE)
    );


  }

绘制EasyReresh+ListView的页面


  @override
  Widget build(BuildContext context){
    //计算方块宽度
    _blockWidth = MediaQuery.of(context).size.width-_blockMargin*2;

    return Scaffold(
      
      appBar: AppBar(title:Text("我的粉丝"),elevation: 0),
      
      body: buildPage(context),
      
    );


  }


绘制Column+EasyReresh+ListView的页面


  @override
  Widget build(BuildContext context){
    _mediaWidth = MediaQuery.of(context).size.width;
    //计算方块宽度
    _blockWidth = _mediaWidth-_blockMargin*2;


    return Scaffold(
      
      //appBar: AppBar(title:Text("我的粉丝"),elevation: 0),
      
      body: Container(
        child:Column(
          children: <Widget>[
            buildHead(context),
            Expanded(child:buildBody(context))
          ],
          
        ),
      )
      
    );


  }
上一篇下一篇

猜你喜欢

热点阅读