flutter showModalBottomSheet 里面的list 自适应高度

核心代码 在 SingleChildScrollView 外面包裹一个 Container 并设置 maxHeight

class CacheSelAlertView extends StatefulWidget {
  const CacheSelAlertView({Key? key}) : super(key: key);

  @override
  _CacheSelAlertViewState createState() => _CacheSelAlertViewState();
}

class _CacheSelAlertViewState extends State<CacheSelAlertView> {
  @override
  
  Widget build(BuildContext context) {
    return Container(
      decoration: const BoxDecoration(
          color: SCColors.color_F2F3F5,
          borderRadius: BorderRadius.only(
              topLeft: Radius.circular(12.0),
              topRight: Radius.circular(12.0))),
      child: SafeArea(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            titleItem(context),
            Container(
              constraints: BoxConstraints(
                  maxHeight: SCUtils().getScreenHeight() - 260,
                  minHeight: 282
              ),
              child: SingleChildScrollView(
                child:  Container(
                  margin: EdgeInsets.all(12),
                  child: ListView.separated(
                      shrinkWrap: true,
                      physics: const NeverScrollableScrollPhysics(),
                      itemBuilder: itemBuilder,
                      separatorBuilder: separatorBuilder,
                      itemCount: 2),),
              ),
            )
          ],
        ),
      ),
    );
  }

 Widget itemBuilder(BuildContext context, int index){
    return Container(
      height: 48,
      decoration: BoxDecoration(
        color: Colors.white
      ),
      child: Row(
        children: [
          Image.asset(SCAsset.iconCacheDel,width: 22,),
          Text('ddd',style: TextStyle(fontSize: 16),maxLines: 2,)
        ],
      ),
    );
  }

  Widget separatorBuilder (BuildContext context ,int index){
    return const Padding(padding: EdgeInsets.only(left: 16,right: 16),child: Divider(height: 1,),);
  }

  Widget titleItem(BuildContext context) {

    return SCAlertHeaderView(
      title: '已选',
      closeTap: () {
        Navigator.of(context).pop();
      },
    );
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容