showModalBottomSheet setState 无法更新ui和高度设置问题

showModalBottomSheet setState 无法更新ui问题

  • 首先理解showModalBottomSheet,本质上可以理解为路由入栈,在show之后弹出的页面其实是另一个页面了,此时再setState刷新的其实是原页面的状态,所以在此方法的builder方法中先返回一个StatefulBuilder,设置其setState方法为state,此时再调用此方法便可做到刷新状态。



showModalBottomSheet(
        shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.only(
                topLeft: Radius.circular(25), topRight: Radius.circular(25))),
        context: context,
        builder: (_) {
          return StatefulBuilder(builder: (context, state) {
            return InkWell(
                onTap: () {
                  state(() {
                    ///update your UI
                  });
                },
                child: Container());
          });
        });



  • 设置弹出模态框的高度只需要返回一个SizedBox并指定其高度,并且将isScrollControlled设置为true即可全屏显示



showModalBottomSheet(
        shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.only(
                topLeft: Radius.circular(25), topRight: Radius.circular(25))),
        isScrollControlled: true,
        context: context,
        builder: (_) {
          return SizedBox(height: 400);
        });
posted @ 2021-11-04 22:01  R1cardo  阅读(309)  评论(0编辑  收藏  举报