软键盘向上弹出的时候,会使界面高度重新计算然后刷新布局,所以导致布局向上顶起的现象,解决方案如下:

 

1.   Scaffold 中需要加入resizeToAvoidBottomPadding: false , 

 

2.  body 部分用SafeArea+SingleChildScrollView+SizeBox包裹,然后设置高度,用来规避重新计算的问题:

  @override
  Widget build(BuildContext context) {
    final padding = MediaQuery.of(context).padding;
    final height =
        MediaQuery.of(context).size.height - padding.top - padding.bottom;
    final width = MediaQuery.of(context).size.width;
    baseContext = context;
    resource = Translations.of(context);
    return LifeCycleDetector(
          //不重要的省略 XXXXX
            child: Scaffold(
              resizeToAvoidBottomPadding: false,
              appBar: AppBar(
                iconTheme: IconThemeData(color: BeautyColors.blue01),
                backgroundColor: Colors.transparent,
                centerTitle: true,
                elevation: 0,
                title: Text(
                  resource.recordWeightItemTitle,
                  style: Styles.text10
                      .merge(TextStyle(color: BeautyColors.blue01)),
                ),
                //XXXX不重要的省略
              ),
              body: SafeArea(
                child: SingleChildScrollView(
                  child: SizedBox(
                    //TODO:height - appbarHeight-bottombarHeight-subLayoutHeight
                    height: height - 184,
                    width: width,
                    child: Container(
                    //XXXXX不重要的省略
  }
 
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐