📜  键盘高度抖动 - Dart (1)

📅  最后修改于: 2023-12-03 15:42:09.742000             🧑  作者: Mango

Dart键盘高度抖动

有时候在使用Dart编写代码时,会发现键盘高度出现抖动的情况,这可能会影响开发体验。本文将介绍键盘高度抖动的原因和解决方法。

原因

Dart是一个分析和编译语言,它使用Dart虚拟机(Dart VM)或者转换成JavaScript在浏览器中运行。当我们使用Dart编写代码时,我们会遇到键盘高度抖动的情况,这是因为Dart使用了异步操作来优化性能,而异步操作可能会导致键盘高度抖动。

解决方法
1. 使用MediaQuery.of(context).viewInsets.bottom

使用MediaQuery.of(context).viewInsets.bottom可以获取当前屏幕的底部插入,即键盘显示时的高度。可以根据这个值来判断是否需要调整布局,以防止键盘高度抖动。

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(),
    body: SingleChildScrollView(
      child: Padding(
        padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
        child: Column(
          children: [
            TextField(),
            TextField(),
            TextField(),
          ],
        ),
      ),
    ),
  );
}
2. 使用SingleChildScrollView和Column的mainAxisSize

在使用SingleChildScrollView和Column时,可以设置mainAxisSize为MainAxisSize.min,这样可以避免键盘高度抖动。

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(),
    body: SingleChildScrollView(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          TextField(),
          TextField(),
          TextField(),
        ],
      ),
    ),
  );
}
总结

在使用Dart编写代码时,键盘高度抖动可能会影响开发体验。我们可以使用MediaQuery.of(context).viewInsets.bottom和SingleChildScrollView等方法来避免键盘高度抖动的情况。