美文网首页
解决Flutter ModalBottomSheet无法设置高度

解决Flutter ModalBottomSheet无法设置高度

作者: 凤天凌 | 来源:发表于2019-06-26 10:32 被阅读0次

    最近在做一个Flutter的底部弹窗,但是发现bottomsheet在弹出的时候最高高度始终限制在了屏幕的二分之一的位置,再往高就会报bottom overflow了,但是我们的弹窗设计稿是占据屏幕三分之二的位置的,显然Flutter的这个限制是无法满足需求的。

    有问题的截图如下:


    Screenshot_20190626-101954.jpg

    怎么去解决这个问题???
    当时百度Google了两个小时,发现了flutter 的issue,说了很多办法,但是都是没有实际性解决问题的,既然找不到现成的办法,看源码吧,然后我就直接打开了showModalBottomSheet这个方法进行查看,因为时间紧,全局搜了height的关键字,发现了一个重要的一点

    image.png

    flutter在这里强制将最大高度设置为constraints.maxHeight的9/16,看来问题症结找到了,本着快速验证的原则,直接修改flutter源码去掉后面的这些,run了一下,果然好了,修改之后的截图如下


    Screenshot_20190626-102017.jpg

    bottomsheet高度一下子高了好多,看来这是关键所在啊,但是如果修改flutter源码,我们的对外打包是在服务器上进行的,不可能去直接修改服务器的flutter源码,而且以后flutter升级的时候这个也是个问题,所以我将bottom_sheet的源码直接拷贝了出来,

    第二个方案是重写bottomsheet,替换这里的maxheight,但是问题来了,这个dart里面的很多类都是私有的,你根本无法重写,怎么办呢?

    拷贝!!!然后更换了名字为adjustable_bottomsheet.dart,将这个文件复制到自己的业务中,将import的地方加上flutter的路径前缀,整个dart文件被我们复制了一份出来,没有报错了,完美,然后为了防止方法名冲突,将这个复制类的方法改成如下:

    image.png

    然后在自己的业务中
    import 'adjustable_bottomsheet.dart';

    将showModalBottomsheet 更换成 showAdjustableBottomSheet ,

    大功告成!!!!

    相关文章

      网友评论

          本文标题:解决Flutter ModalBottomSheet无法设置高度

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