美文网首页
listview被SingleChildScrollView、c

listview被SingleChildScrollView、c

作者: 晓函 | 来源:发表于2020-04-20 23:49 被阅读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))
              ],
              
            ),
          )
          
        );
    
    
      }
    

    相关文章

      网友评论

          本文标题:listview被SingleChildScrollView、c

          本文链接:https://www.haomeiwen.com/subject/mkkeihtx.html