带有 resizeToAvoidBottomInset 的 flutter 键盘打开有一个奇怪的间隙

标签 flutter dart

我有一个 SingleChildScrollView包含一些 TextFormFields .为了让键盘向上插入 ScrollView ,我设置了 resizeToAvoidBottomInset在我的脚手架上。
我注意到键盘弹出时有空白/间隙,因为 ScrollView 的插入速度似乎比键盘出现的速度快。
在 native 应用程序上,此行为不存在。
enter image description here
这是一个简单的例子:

class TestWidget extends StatefulWidget {
  TestWidget({Key key}) : super(key: key);

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

class _TestWidgetState extends State<TestWidget> {
  Widget _getInput() {
    return Container(
      padding: EdgeInsets.all(20.0),
      height: 75.0,
      width: double.infinity,
      color: Colors.cyan,
      child: TextFormField(
        initialValue: 'Some Random Input',
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomInset: true,
      body: Container(
        child: SingleChildScrollView(
          child: Container(
            child: Column(
              children: [
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

最佳答案

flutter 每秒绘制屏幕 120 次。
这就是性能低下的智能手机上发生的情况。
方法是,如果选择Scaffold Backgournd颜色为同色,这种现象不会出现太多。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomInset: true,
      body: Container(
        child: SingleChildScrollView(
          child: Container(
            child: Column(
              children: [
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
                _getInput(),
              ],
            ),
          ),
        ),
      ),
      backgroundColor: Colors.cyan, // background color setting
    );
  }

关于带有 resizeToAvoidBottomInset 的 flutter 键盘打开有一个奇怪的间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63404480/

相关文章:

dart - Dart AOT 是如何工作的?

flutter - 如何在 flutter 中解析网络套接字响应(JSON)

http - 如何在Flutter中实现API调用?

Flutter - 如何使用 webview_flutter 包播放 Google Drive 视频预览

flutter - Flutter中如何在NetworkImage()中添加网络图片列表

json - 如何从列表中映射 Flutter JSON 字符串?

flutter - 在 channel app_settings 上找不到方法 app_settings 的实现

flutter - dartdoc 失败 : Top level package requires Flutter but FLUTTER_ROOT environment variable not set

firebase - 必须向文本小部件提供非空字符串。 'package:flutter/src/widgets/text.dart' : Failed assertion: line 370 pos 10: 'data != null'

UTC中的DateTime不转换为Local